ActiveMQ - 动态更改侦听器的数量

时间:2014-05-13 08:29:26

标签: spring-jms

我在Spring上使用ActiveMQ。它很容易配置并开始收听消息。

我的一个队列被定义为

<jms:listener-container container-type="default" 
                        connection-factory="connectionFactory"
                        acknowledge="auto">
    <jms:listener destination="RV_QUEUE" ref="webListener" />
</jms:listener-container>

一切都很好,但我想动态地让我们节点中的一些机器从ActiveMQ中取消注册,以便停止消费消息。

我可以让每台机器都听取信号。问题是,如何让他们注册/注销AMQ?

我是否需要回去创建自己的会话,并打开和关闭它们?或者有一种Spring方式吗?

1 个答案:

答案 0 :(得分:2)

<jms:listener-container>为每个AbstractJmsListeningContainer子元素配置填充<jms:listener>个bean。该容器可以使用显式id进行注册。

另一方面AbstractJmsListeningContainer实施SmartLifecycle。因此,start/stop属性可以随时id任何监听器容器(及其监听器):

beanFactory.getBean("myListener", Lifecycle.class).stop();

停止监听器容器后,监听器将停止使用队列中的消息。