Spring integration Spring集成通过JBOSS资源适配器自动重新连接到IBM MQ

Spring integration Spring集成通过JBOSS资源适配器自动重新连接到IBM MQ,spring-integration,ibm-mq,spring-jms,Spring Integration,Ibm Mq,Spring Jms,我们在项目中使用Spring集成,我们有一个需求,即如果IBM MQ宕机,那么我们必须在它启动时自动连接到IBM MQ。我们使用org.springframework.jms.listener.DefaultMessageListenerContainer类的recoveryInterval选项完成了这个实现。我们已给定恢复间隔值以尝试恢复MQ连接。但在MQ重新启动后,它不会恢复连接。以下是我现有的配置: <jms:message-driven-channel-adapter

我们在项目中使用Spring集成,我们有一个需求,即如果IBM MQ宕机,那么我们必须在它启动时自动连接到IBM MQ。我们使用
org.springframework.jms.listener.DefaultMessageListenerContainer
类的
recoveryInterval
选项完成了这个实现。我们已给定恢复间隔值以尝试恢复MQ连接。但在MQ重新启动后,它不会恢复连接。以下是我现有的配置:

       <jms:message-driven-channel-adapter id="adapterId" channel="raw-channel" container="messageListenerContainer" />


        <bean id="messageListenerContainer"  class="org.springframework.jms.listener.DefaultMessageListenerContainer">
                <property name="connectionFactory" ref="customQueueCachingConnectionFactory" />
                <property name="destination" ref="requestQueue" />
                <property name="recoveryInterval" value="60000" />
            </bean>

    Below is the Current Connection Factory :
    <bean id="queueCachingConnectionFactory"
            class="org.springframework.jms.connection.CachingConnectionFactory">
            <property name="targetConnectionFactory" ref="queueConnectionFactory" />
            <property name="sessionCacheSize" value="10" />
            <property name="cacheProducers" value="false" />
    <!--        <property name="reconnectOnException" value="true" /> -->
    <!--        <property name="exceptionListener" ref="MQExceptionListener"></property> -->
        </bean>

        <jee:jndi-lookup id="queueConnectionFactory" jndi-name="MQConnectionFactory"
            expected-type="javax.jms.ConnectionFactory" lookup-on-startup="true"></jee:jndi-lookup>


        <jee:jndi-lookup id="queue" jndi-name="Queue"
            expected-type="javax.jms.Queue" lookup-on-startup="true"/>

提前谢谢

默认消息侦听容器应引用缓存连接工厂:

 <!-- caching connection factory fascade, also implements exception listener -->
<bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
   <property name="targetConnectionFactory" ref="connectionFactory"/>
   <property name="sessionCacheSize" value="10"/>
   <property name="reconnectOnException" value="true"/>
</bean>

<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageDrivenPOJO" class="com.redhat.gss.spring.MessageDrivenPOJO" />

<!-- The message listener container -->
<bean id="messageListener" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
   <property name="sessionTransacted" value="true"/>
   <property name="concurrentConsumers" value="1"/>
   <property name="cacheLevelName" value="CACHE_CONSUMER"/>                
   <property name="receiveTimeout" value="10000"/>
   <property name="sessionAcknowledgeMode" value="2"/>
   <property name="messageListener" ref="messageDrivenPOJO"/>
   <property name="connectionFactory" ref="cachingConnectionFactory"/>
   <property name="exceptionListener" ref="cachingConnectionFactory"/>
   <property name="destination" ref="jbossQueue"/>
</bean>

默认消息侦听容器应引用缓存连接工厂:

 <!-- caching connection factory fascade, also implements exception listener -->
<bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
   <property name="targetConnectionFactory" ref="connectionFactory"/>
   <property name="sessionCacheSize" value="10"/>
   <property name="reconnectOnException" value="true"/>
</bean>

<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageDrivenPOJO" class="com.redhat.gss.spring.MessageDrivenPOJO" />

<!-- The message listener container -->
<bean id="messageListener" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
   <property name="sessionTransacted" value="true"/>
   <property name="concurrentConsumers" value="1"/>
   <property name="cacheLevelName" value="CACHE_CONSUMER"/>                
   <property name="receiveTimeout" value="10000"/>
   <property name="sessionAcknowledgeMode" value="2"/>
   <property name="messageListener" ref="messageDrivenPOJO"/>
   <property name="connectionFactory" ref="cachingConnectionFactory"/>
   <property name="exceptionListener" ref="cachingConnectionFactory"/>
   <property name="destination" ref="jbossQueue"/>
</bean>


您还应该共享
连接工厂
配置。另外,也要分享关于此事的日志。如果你说“通过JBOSS资源适配器”,可能问题就在那里,而不是在春天…@ArtemBilan:你能帮我解决上面的问题吗?你也应该共享
ConnectionFactory
config。另外,也要分享关于此事的日志。如果你说“通过JBOSS资源适配器”,也许问题就在那里,而不是在春天…@ArtemBilan:你能帮我解决上面的问题吗