【发布时间】:2014-09-11 02:31:31
【问题描述】:
我最近从 3.1 升级到 spring 4.1,jms:listener-container 似乎没有在重试设置侦听器之前等待超时,就像在 3.1 中那样。我已经尝试过recovery-interval="10000",它仍然在每秒尝试大约 3 次。
这是我的 spring 配置部分:
<jms:listener-container recovery-interval="10000" connection-factory="connectionFactory">
<jms:listener destination="${myQueueDestination}" ref="myListener" />
<!-- many others -->
</jms:listener-container>
我在 4.1 上的日志看起来是这样的(见次):
11/09 11:56:33 WARN [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed f or destination 'MYQUEUE.NAME' - trying to recover. Cause: MQJMS2008: failed to open MQ queue ''.; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2085'.
11/09 11:56:33 WARN [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed for destination 'MYQUEUE.NAME' - trying to recover. Cause: MQJMS2008: failed to open MQ queue ''.; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2085'.
11/09 11:56:34 WARN [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed f (...)
而 3.1 看起来是这样的(见 5 秒延迟):
11/09 12:14:32 WARN [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed for destination 'MYQUEUE.NAME' - trying to recover. Cause: MQJMS2008: failed to open MQ queue ''.; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2085'.
11/09 12:14:37 WARN [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed for destination 'MYQUEUE.NAME' - trying to recover. Cause: MQJMS2008: failed to open MQ queue ''.; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2085'.
11/09 12:14:43 WARN [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed for destination 'MYQUEUE.NAME' - trying to recover. Cause: MQJMS2008: failed to open MQ queue ''.; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2085'.
当队列备份时,一切正常。这些超时设置是否可用于配置?
问候
【问题讨论】:
-
我已经用 spring-integration-jms 替换了 spring-jms 并且使用了 spring JMS 4.0,问题就消失了。仍然想知道 4.1 到底发生了什么。
标签: spring jms ibm-mq spring-integration spring-jms