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();