【发布时间】:2017-04-04 12:51:45
【问题描述】:
我的 MQueue 有以下配置:
<jms:listener-container container-type="default" connection-factory="cachedConnectionFactory" acknowledge="auto">
<jms:listener id="myListenerId" destination="myDestination" ref="myListener" method="onMessage" />
</jms:listener-container>
当我尝试停止接收 JMS 消息时,我编写了以下代码
jmsManagement = myProject.instance.getContext().getBean('myListenerId',Lifecycle.class);
jmsManagement.stop();
PS:
- 当我
stop()我的听众时,isRunning()返回 False,但我仍然通过 MQueue 获取消息...onMessage被触发。 -
jmsManagement是类Lifecycle的一个实例。即使我将其更改为DefaultMessageListenerContainer,也是如此。 - 我在调用
start()之前收到消息,即使autoStartup设置为 false。 -
jmsManagement.shutdown();并没有阻止监听器被触发。
有人知道如何停止这个 MQ 侦听器吗? 有什么我想念的吗?
【问题讨论】:
-
cachedConnectionFactory 的缓存级别是多少?他必须 >= 1
-
@HassenBennour 实际上等于 3
<property name="sessionCacheSize" value="3" /> -
对不起,我的意思是 DefaultMessageListenerContainer.cacheLevel,尝试调用 DefaultMessageListenerContainer.shutdown() 来停止连接并关闭监听器
-
@HassenBennour cacheLevel 等于 3。
jmsManagement.shutdown();没有阻止监听器被触发...我找不到逻辑结论 -
我也是,我不明白你是怎么做到的 myProject.instance.getContext().getBean('myListenerId',DefaultMessageListenerContainer.class);无一例外,因为 myListenerId 是一个监听器
标签: spring message-queue lifecycle spring-jms