[ 
https://issues.apache.org/jira/browse/ARTEMIS-5093?focusedWorklogId=945170&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-945170
 ]

ASF GitHub Bot logged work on ARTEMIS-5093:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Nov/24 14:18
            Start Date: 22/Nov/24 14:18
    Worklog Time Spent: 10m 
      Work Description: jbertram commented on code in PR #5291:
URL: https://github.com/apache/activemq-artemis/pull/5291#discussion_r1853985284


##########
artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ServerLocatorImpl.java:
##########
@@ -1298,6 +1298,18 @@ public ServerLocatorImpl 
setInitialMessagePacketSize(final int size) {
       return this;
    }
 
+   @Override
+   public int getOnMessageCloseTimeout() {
+      return config.onMessageCloseTimeout;
+   }
+
+   @Override

Review Comment:
   I changed the JavaDoc to be more clear. I didn't want to add validation as 
it wouldn't be consistent with the rest of the method and adding validation to 
all the places that could realistically use it is well beyond the scope of this 
PR.



##########
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/MessageHandlerTest.java:
##########
@@ -117,6 +118,42 @@ public void onMessage(final ClientMessage message) {
       session.close();
    }
 
+   @Test
+   public void testMessageHandlerCloseTimeout() throws Exception {
+      // create Netty acceptor so client can use new onMessageCloseTimeout URL 
parameter
+      server.getRemotingService().createAcceptor("netty", 
"tcp://127.0.0.1:61616").start();
+      final int timeout = 1000;
+      locator = 
ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?onMessageCloseTimeout="
 + timeout);
+      sf = createSessionFactory(locator);
+      ClientSession session = addClientSession(sf.createSession(false, true, 
true));
+      session.createQueue(QueueConfiguration.of(QUEUE).setDurable(false));
+      ClientProducer producer = session.createProducer(QUEUE);
+      producer.send(createTextMessage(session, "m"));
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, null, false);
+
+      session.start();
+
+      CountDownLatch latch = new CountDownLatch(1);
+      consumer.setMessageHandler(message -> {
+         latch.countDown();
+         // don't just Thread.sleep() here because it will be interrupted on 
ClientConsumer.close()
+         long start = System.currentTimeMillis();
+         while (System.currentTimeMillis() - start < 2000) {
+            try {
+               Thread.sleep(100);
+            } catch (InterruptedException e) {
+               // ignore
+            }
+         }
+      });
+      latch.await();
+      long start = System.currentTimeMillis();
+      consumer.close();
+      long end = System.currentTimeMillis();
+      assertTrue( (end - start >= timeout) && (end - start <= 2000), "Closing 
consumer took " + (end - start) + "ms");

Review Comment:
   Done.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 945170)
    Time Spent: 1h 40m  (was: 1.5h)

> Support configurable onMessage timeout when closing consumer
> ------------------------------------------------------------
>
>                 Key: ARTEMIS-5093
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5093
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>            Reporter: Justin Bertram
>            Assignee: Justin Bertram
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> When closing a consumer the Core client is hard-coded to wait for 10,000ms 
> for any {{onMessage}} to complete. This timeout should be configurable.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to