From 56be6b93d3ef52270e5ea4e889dc506188f430d5 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Fri, 29 Jun 2007 11:34:20 +0000 Subject: [PATCH] make sure we properly close down the advisory consumer; great catch by Manuel! git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@551857 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/activemq/AdvisoryConsumer.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/AdvisoryConsumer.java b/activemq-core/src/main/java/org/apache/activemq/AdvisoryConsumer.java index 8106ab89c8..19ca585306 100755 --- a/activemq-core/src/main/java/org/apache/activemq/AdvisoryConsumer.java +++ b/activemq-core/src/main/java/org/apache/activemq/AdvisoryConsumer.java @@ -27,8 +27,11 @@ import org.apache.activemq.command.DataStructure; import org.apache.activemq.command.DestinationInfo; import org.apache.activemq.command.MessageAck; import org.apache.activemq.command.MessageDispatch; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; public class AdvisoryConsumer implements ActiveMQDispatcher { + private static final transient Log log = LogFactory.getLog(AdvisoryConsumer.class); private final ActiveMQConnection connection; private ConsumerInfo info; @@ -46,8 +49,14 @@ public class AdvisoryConsumer implements ActiveMQDispatcher { this.connection.syncSendPacket(this.info); } - public void dispose() { + public synchronized void dispose() { if (!closed) { + try { + this.connection.asyncSendPacket(info.createRemoveCommand()); + } + catch (JMSException e) { + log.info("Failed to send remove command: " + e, e); + } this.connection.removeDispatcher(info.getConsumerId()); closed = true; }