Jms Gateway无法刷新MQ连接

时间:2015-09-21 23:59:36

标签: spring-integration

我有一个入站网关,它正在监听MQ以获取消息。每当MQ服务器被买下时。我松开了连接,在日志中我看到我的入站网关每隔5秒尝试刷新一次连接。但是一旦MQ服务器启动,我仍然会在日志中看到相同的错误。如果我错过了配置中的任何信息,或者在MQ服务器上有什么要做的,请告诉我。

Spring Config

<bean id="cachingConnectionFactory1" class="org.springframework.jms.connection.CachingConnectionFactory"> 
    <property name="targetConnectionFactory" ref="mqConnectionFactory1"/> 
    <property name="reconnectOnException" value="true"/>
</bean>

<bean id="mqConnectionFactory1" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"> 
    <property name="targetConnectionFactory"> 
        <bean class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
            <property name="hostName" value="${mq.hostname.1}"/> 
            <property name="port" value="${mq.port}"/> 
            <property name="queueManager" value="${mq.queuemanager.1}"/> 
            <property name="transportType" value="${mq.transporttype}"/>
            <property name="channel" value="${mq.channel}"/>
        </bean> 
    </property> 
    <property name="username" value="${mq.username}"/>
</bean>

<int-jms:message-driven-channel-adapter 
        id="mqEnterpriseRequestAdapter1" 
        connection-factory="cachingConnectionFactory1" 
        destination="xyzQueue"
        concurrent-consumers="2"
        max-concurrent-consumers="5"
        cache-level="5" 
        idle-consumer-limit="5"
        max-messages-per-task="2"
        channel="xyzReceive"/>

错误日志:

[2015-09-19 01:52:56,267]  WARN [org.springframework.jms.listener.DefaultMessageListenerContainer#4-494492] (DefaultMessageListenerContainer.java:842) - Setup of JMS message listener invoker failed for destination 'queue:///queuename' - trying to recover. Cause: MQJMS2002: failed to get message from MQ queue; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2019
[2015-09-19 01:52:51,292]  WARN [org.springframework.jms.listener.DefaultMessageListenerContainer#4-494037] (DefaultMessageListenerContainer.java:842) - Setup of JMS message listener invoker failed for destination 'queue:///queuename' - trying to recover. Cause: MQJMS2002: failed to get message from MQ queue; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2019
[2015-09-19 01:52:51,263]  WARN [org.springframework.jms.listener.DefaultMessageListenerContainer#4-494488] (DefaultMessageListenerContainer.java:842) - Setup of JMS message listener invoker failed for destination 'queue:///queuename' - trying to recover. Cause: MQJMS2002: failed to get message from MQ queue; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2019
[2015-09-19 01:52:46,291]  WARN [org.springframework.jms.listener.DefaultMessageListenerContainer#4-494033] (DefaultMessageListenerContainer.java:842) - Setup of JMS message listener invoker failed for destination 'queue:///queuename' - trying to recover. Cause: MQJMS2002: failed to get message from MQ queue; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2019
[2015-09-19 01:52:46,262]  WARN [org.springframework.jms.listener.DefaultMessageListenerContainer#4-494485] (DefaultMessageListenerContainer.java:842) - Setup of JMS message listener invoker failed for destination 'queue:///queuename' - trying to recover. Cause: MQJMS2002: failed to get message from MQ queue; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2019

2 个答案:

答案 0 :(得分:0)

我通过Google搜索MQJE001: Completion Code 2, Reason 2019

找到了您问题的答案

答案是on IBM's support site

  

原因代码2019通常在发生连接中断错误(原因代码2009)后发生。您将在SystemOut.log中看到原因代码为2019的原因代码为2009的JMSException。

     

原因代码2009表明与MQ队列管理器的连接不再有效,通常是由于网络或防火墙问题。

     

原因代码2019错误将在原因代码2009错误发生后无效连接保留在连接池中时发生。下次应用程序尝试使用其中一个连接时,会出现原因代码2019。

答案 1 :(得分:0)

在以下帖子后解决,修改后配置发生变化 http://forum.spring.io/forum/spring-projects/integration/jms/89532-defaultmessagelistenercontainer-cachingconnectionfactory-tomcat-and-websphere-mq

<bean id="mqContainer1" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="cachingConnectionFactory1" />
    <property name="exceptionListener" ref="cachingConnectionFactory1" />
    <property name="destinationName" value="${mq.requestqueue}" />
    <property name="maxConcurrentConsumers" value="x"/>
    <property name="concurrentConsumers" value="x"/>
    <property name="maxMessagesPerTask" value="x"/>
    <property name="idleConsumerLimit" value="x"/>
</bean>

<int-jms:message-driven-channel-adapter 
        id="mqEnterpriseRequestAdapter1" 
        container="cbatsMqContainer1"
        channel="mqMessageReceive"/>