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 <[email protected]>
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();