This is an automated email from the ASF dual-hosted git repository.

zhoubo pushed a commit to branch 5.0.0-alpha
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/5.0.0-alpha by this push:
     new 03526d8  [ISSUE #3498] Make messages in reviveTopic more evenly 
written to different queues #3499
03526d8 is described below

commit 03526d8c0f8cee45d11dc720353e0e533bff36c7
Author: cserwen <[email protected]>
AuthorDate: Wed Jan 12 21:00:56 2022 +0800

    [ISSUE #3498] Make messages in reviveTopic more evenly written to different 
queues #3499
---
 .../org/apache/rocketmq/broker/processor/PopMessageProcessor.java     | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
 
b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
index aa97fc8..fcc972d 100644
--- 
a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
+++ 
b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
@@ -92,6 +92,7 @@ public class PopMessageProcessor implements 
NettyRequestProcessor {
     private PopLongPollingService popLongPollingService;
     private PopBufferMergeService popBufferMergeService;
     private QueueLockManager queueLockManager;
+    private AtomicLong ckMessageNumber;
 
     public PopMessageProcessor(final BrokerController brokerController) {
         this.brokerController = brokerController;
@@ -104,6 +105,7 @@ public class PopMessageProcessor implements 
NettyRequestProcessor {
         this.popLongPollingService = new PopLongPollingService();
         this.queueLockManager = new QueueLockManager();
         this.popBufferMergeService = new 
PopBufferMergeService(this.brokerController, this);
+        this.ckMessageNumber = new AtomicLong();
     }
 
     public PopLongPollingService getPopLongPollingService() {
@@ -350,7 +352,7 @@ public class PopMessageProcessor implements 
NettyRequestProcessor {
         if (requestHeader.isOrder()) {
             reviveQid = KeyBuilder.POP_ORDER_REVIVE_QUEUE;
         } else {
-            reviveQid = randomQ % 
this.brokerController.getBrokerConfig().getReviveQueueNum();
+            reviveQid = (int) Math.abs(ckMessageNumber.getAndIncrement() % 
this.brokerController.getBrokerConfig().getReviveQueueNum());
         }
 
         GetMessageResult getMessageResult = new GetMessageResult();

Reply via email to