Я бы предложил вам использовать виртуальные темы вместо постоянных потребителей.
При использовании виртуальная тема все ваши сообщения от производителя отправляются так же, как вы отправляетеих сейчас.Однако, когда новый потребитель регистрируется с уникальным именем потребителя - для него создается новая очередь, и все сообщения, отправляемые в виртуальную тему, дублируются в очередь.Это означает, что у каждого потребителя есть своя собственная очередь - что гораздо удобнее, чем постоянная подписка на темы.
Затем, когда вы точно знаете, что вашего потребителя больше нет - вы можете удалить очередь со всемиожидающие сообщения в нем.Это можно сделать из кода или вручную через веб-консоль AMQ или jconsole.
РЕДАКТИРОВАТЬ: С виртуальной темой вы получаете новую очередь для каждого отдельного потребителя, поэтому вы можете применить политику очереди кудаляйте его, когда он неактивен в течение указанного периода времени.
В вашем файле activemq.xml gcInactiveDestination = true:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" producerFlowControl="false"
gcInactiveDestinations="true" inactiveTimoutBeforeGC="10000"/>
Подробнее: http://activemq.apache.org/delete-inactive-destinations.html