我在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方式吗?
答案 0 :(得分:2)
<jms:listener-container>
为每个AbstractJmsListeningContainer
子元素配置填充<jms:listener>
个bean。该容器可以使用显式id
进行注册。
另一方面AbstractJmsListeningContainer
实施SmartLifecycle
。因此,start/stop
属性可以随时id
任何监听器容器(及其监听器):
beanFactory.getBean("myListener", Lifecycle.class).stop();
停止监听器容器后,监听器将停止使用队列中的消息。