You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/03/09 19:39:40 UTC
[2/2] activemq-artemis git commit: ARTEMIS-1026 don't route when
purgeOnNoConsumers and consumers=0
ARTEMIS-1026 don't route when purgeOnNoConsumers and consumers=0
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/a052e2ca
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/a052e2ca
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/a052e2ca
Branch: refs/heads/master
Commit: a052e2ca9ac228a3241b6fb83ddcc258a387d8df
Parents: a41951a
Author: Justin Bertram <jb...@apache.org>
Authored: Thu Mar 9 12:49:16 2017 -0600
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 9 14:39:33 2017 -0500
----------------------------------------------------------------------
.../artemis/core/server/impl/QueueImpl.java | 3 +++
.../integration/addressing/AddressingTest.java | 21 +++++++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a052e2ca/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
index fa111eb..8bab051 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
@@ -439,6 +439,9 @@ public class QueueImpl implements Queue {
@Override
public void route(final Message message, final RoutingContext context) throws Exception {
+ if (purgeOnNoConsumers && getConsumerCount() == 0) {
+ return;
+ }
context.addQueue(address, this);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a052e2ca/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/addressing/AddressingTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/addressing/AddressingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/addressing/AddressingTest.java
index 34dd7d7..0610829 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/addressing/AddressingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/addressing/AddressingTest.java
@@ -227,13 +227,28 @@ public class AddressingTest extends ActiveMQTestBase {
SimpleString address = new SimpleString("test.address");
SimpleString queueName = SimpleString.toSimpleString(UUID.randomUUID().toString());
server.createQueue(address, RoutingType.ANYCAST, queueName, null, null, true, false, false, false, false, 1, true, true);
- assertNotNull(server.locateQueue(queueName));
+ Queue queue = server.locateQueue(queueName);
+ assertNotNull(queue);
ClientSession session = sessionFactory.createSession();
ClientProducer producer = session.createProducer(address);
+
+ // there are no consumers so no messages should be routed to the queue
producer.send(session.createMessage(true));
- session.createConsumer(queueName).close();
+ assertEquals(0, queue.getMessageCount());
+
+ ClientConsumer consumer = session.createConsumer(queueName);
+ // there is a consumer now so the message should be routed
+ producer.send(session.createMessage(true));
+ assertEquals(1, queue.getMessageCount());
+
+ consumer.close();
+ // the last consumer was closed so the queue should exist but be purged
assertNotNull(server.locateQueue(queueName));
- assertEquals(0, server.locateQueue(queueName).getMessageCount());
+ assertEquals(0, queue.getMessageCount());
+
+ // there are no consumers so no messages should be routed to the queue
+ producer.send(session.createMessage(true));
+ assertEquals(0, queue.getMessageCount());
}
@Test