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; }