REQ-3345: 添加限流
This commit is contained in:
parent
5c7dd410d9
commit
20197be1ef
@ -46,22 +46,22 @@ class GroupMessageSyncHandler implements Runnable {
|
||||
Timeline timeline = new Timeline(maxMs + 1, System.currentTimeMillis());
|
||||
// don't change
|
||||
long limit = 100L;
|
||||
TimeNode head = timeline.head();
|
||||
while (head != null) {
|
||||
NimGroupGetMessagesResponse response = fetchMessages(head, limit);
|
||||
TimeNode current = timeline.head();
|
||||
while (current != null) {
|
||||
NimGroupGetMessagesResponse response = fetchMessages(current, limit);
|
||||
BizAssertions.assertTrue(response.isSuccess(), "fetch group messages failed");
|
||||
List<NimGroupMessage> msgList = response.getMsgs();
|
||||
if (CollectionUtils.isEmpty(msgList)) {
|
||||
head = timeline.consume();
|
||||
current = timeline.advance();
|
||||
continue;
|
||||
}
|
||||
// response.size 不可靠
|
||||
if (msgList.size() >= limit && head.isSplittable()) {
|
||||
head = timeline.split();
|
||||
if (msgList.size() >= limit && current.isSplittable()) {
|
||||
current = timeline.split();
|
||||
continue;
|
||||
}
|
||||
saveMessages(asGroupMessages(msgList));
|
||||
head = timeline.consume();
|
||||
current = timeline.advance();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ public class Timeline {
|
||||
return head();
|
||||
}
|
||||
|
||||
public TimeNode consume() {
|
||||
public TimeNode advance() {
|
||||
TimeNode node = head();
|
||||
BizAssertions.assertNotNull(node, "timeline is empty");
|
||||
nodes.removeFirst();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user