无法停止MQueue侦听器

时间:2017-04-04 12:51:46

标签: spring message-queue lifecycle spring-jms

我的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()设置为false,我也会在致电autoStartup之前接收消息。
  • jmsManagement.shutdown();没有阻止听众被触发。

有没有人知道如何停止这个MQ侦听器? 我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

我实际上必须将void modify(int y[], const int f[], const int size) 设置为 true

由于我无法使用autoStartup执行此操作,因此我实例化了jms:listener-container bean并将DefaultMessageListenerContainer属性设置为 false

以下代码对我有用:

autoStartup