You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2020/03/06 00:24:09 UTC

[activemq-artemis] branch master updated: ARTEMIS-2644 Include client id into non durable subscriber queue name

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

jbertram pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new be0fa47  ARTEMIS-2644 Include client id into non durable subscriber queue name
     new ead80ea  This closes #3002
be0fa47 is described below

commit be0fa47d63fd266660685d139a04ecdc3c64737a
Author: brusdev <br...@gmail.com>
AuthorDate: Thu Mar 5 19:09:03 2020 +0100

    ARTEMIS-2644 Include client id into non durable subscriber queue name
---
 .../artemis/jms/client/ActiveMQSession.java        |  2 +-
 .../integration/jms/consumer/JmsConsumerTest.java  | 31 ++++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
index c61df98..d879dfe 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
@@ -834,7 +834,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
                   throw new RuntimeException("Subscription name cannot be null for durable topic consumer");
                // Non durable sub
 
-               queueName = new SimpleString(UUID.randomUUID().toString());
+               queueName = ActiveMQDestination.createQueueNameForSubscription(false, connection.getClientID(), UUID.randomUUID().toString());
 
                createTemporaryQueue(dest, RoutingType.MULTICAST, queueName, coreFilterString, response);
 
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/consumer/JmsConsumerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/consumer/JmsConsumerTest.java
index c4fd897..64bedeb 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/consumer/JmsConsumerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/consumer/JmsConsumerTest.java
@@ -31,10 +31,12 @@ import javax.jms.MessageProducer;
 import javax.jms.QueueBrowser;
 import javax.jms.Session;
 import javax.jms.TextMessage;
+import javax.jms.TopicSession;
 
 import org.apache.activemq.artemis.api.core.RoutingType;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSConstants;
 import org.apache.activemq.artemis.api.jms.JMSFactoryType;
@@ -550,6 +552,35 @@ public class JmsConsumerTest extends JMSTestBase {
    }
 
    @Test
+   public void testTopicConsumer() throws Exception {
+      String clientId = "TESTID";
+
+      conn = cf.createConnection();
+      conn.setClientID(clientId);
+      conn.start();
+
+      try {
+         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+         topic = session.createTopic(T_NAME);
+         MessageProducer producer = session.createProducer(topic);
+         MessageConsumer consumer = ((TopicSession)session).createSubscriber(topic);
+
+         for (Object queueControlObject : server.getManagementService().getResources(QueueControl.class)) {
+            QueueControl queueControl = (QueueControl)queueControlObject;
+            if (queueControl.getAddress().compareTo(T_NAME) == 0) {
+               assertTrue(queueControl.getName().contains(clientId));
+               break;
+            }
+         }
+
+         producer.send(session.createTextMessage("test"));
+         Assert.assertNotNull(consumer.receive(5000));
+      } finally {
+         conn.close();
+      }
+   }
+
+   @Test
    public void testSharedConsumer() throws Exception {
       conn = cf.createConnection();
       conn.start();