我的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侦听器吗?我遗漏了什么吗?
发布于 2017-04-05 16:05:19
实际上,我不得不将autoStartup设置为true。
因为我不能使用jms:listener-container实现这一点,所以我实例化了一个DefaultMessageListenerContainer bean,并将autoStartup属性设置为false。
下面是对我有用的代码:
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer" id="pitagorCPYListener">
<property name="autoStartup" value="false" />
<property name="connectionFactory" ref="cachedConnectionFactory" />
<property name="destination" ref="defaultDestination" />
<property name="messageListener" ref="listenerPitagorCPY" />
</bean>
<bean id="defaultDestination" class="com.ibm.mq.jms.MQQueue">
<constructor-arg value="#{mqConnectionFactory.destination}"/>
</bean>https://stackoverflow.com/questions/43207792
复制相似问题