无法停止 MQueue 侦听器
Not able to Stop MQueue listener
我的 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()
return 错误,但我仍然通过 MQueue 接收消息... onMessage
被触发。
jmsManagement
是 class Lifecycle
的实例。即使我将其更改为 DefaultMessageListenerContainer
,也是如此。
- 我在调用
start()
之前收到消息,即使 autoStartup
设置为 false。
jmsManagement.shutdown();
没有阻止侦听器被触发。
有没有人知道如何停止这个 MQ 侦听器?
有什么我想念的吗?
实际上我必须将 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>
我的 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()
return 错误,但我仍然通过 MQueue 接收消息...onMessage
被触发。 jmsManagement
是 classLifecycle
的实例。即使我将其更改为DefaultMessageListenerContainer
,也是如此。- 我在调用
start()
之前收到消息,即使autoStartup
设置为 false。 jmsManagement.shutdown();
没有阻止侦听器被触发。
有没有人知道如何停止这个 MQ 侦听器? 有什么我想念的吗?
实际上我必须将 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>