You are viewing a plain text version of this content. The canonical link for it is here.
Posted to gitbox@activemq.apache.org by "tabish121 (via GitHub)" <gi...@apache.org> on 2023/06/15 20:51:40 UTC

[GitHub] [activemq-artemis] tabish121 commented on a diff in pull request #4509: ARTEMIS-4314 support queue federation batchOnEmpty via consumerWindow…

tabish121 commented on code in PR #4509:
URL: https://github.com/apache/activemq-artemis/pull/4509#discussion_r1231516909


##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederatedQueueConsumerImpl.java:
##########
@@ -155,6 +167,67 @@ private synchronized void connect() throws Exception {
       }
    }
 
+   interface QueueHandle {
+      long getMessageCount();
+      int getCreditWindow();
+   }
+
+   private QueueHandle createQueueHandle(ActiveMQServer server, ClientSession.QueueQuery queryResult) {
+      final Queue queue = server.locateQueue(queryResult.getName());
+      int creditWindow = DEFAULT_CONSUMER_WINDOW_SIZE;
+
+      final Integer defaultConsumerWindowSize = queryResult.getDefaultConsumerWindowSize();
+      if (defaultConsumerWindowSize != null) {
+         creditWindow = defaultConsumerWindowSize.intValue();
+         if (creditWindow <= 0) {
+            creditWindow = DEFAULT_CONSUMER_WINDOW_SIZE;
+            logger.trace("{} override non positive queue consumerWindowSize with {}.", this, creditWindow);
+         }
+      }
+
+      final int finalCreditWindow = creditWindow;
+      return new QueueHandle() {
+         @Override
+         public long getMessageCount() {
+            return queue.getMessageCountForRing();
+         }
+
+         @Override
+         public int getCreditWindow() {
+            return finalCreditWindow;
+         }
+      };
+   }
+
+   private void scheduleCreditOnEmpty(final int delay, final QueueHandle handle) {
+      if (handle != null) {

Review Comment:
   Personally I'd treat a null handle being passed here as a terminal event and throw since it's probably gonna break something if you try and schedule for credit and don't actually schedule anything to replenish credit.  



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: gitbox-unsubscribe@activemq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org