【问题标题】:spring integration with multiple defaultmessagelistenercontainer (with transactionManager) and multiple <jms:outbound-channel-adapter> andspring 与多个 defaultmessagelistenercontainer (with transactionManager) 和多个 <jms:outbound-channel-adapter> 集成和
【发布时间】:2018-03-28 19:17:19
【问题描述】:

我有一个 Spring 集成应用程序,需要 2 个 DefaultMessageListenerContainer(带有 transactionManager)和 2 个 jms:outbound-channel-adapter

我已经用"property name="connectionFactory" ref="jmsConnectionFactory""property name="transactionManager" ref="platformTransactionManager" 配置了每个监听器容器。

但对于事务管理器,我再次使用了不同的 jmsConnectionFactory 。我没有在侦听器容器中使用 CachingConnectionFactory ,而是在 platformTransactionManager 中使用它。对于jms:outbound-channel-adapter,我再次使用了在侦听器容器中使用过的jmsConnectionFactory

我的问题是,使用这种配置,我遇到了问题。在高负载条件下超过限制 (150) 到 MQ 通道的连接数。

我尝试了许多不同的方法,但我没有看到没有。连接一旦启动就会断开,使用cachingFactory的以下配置

CachingConnectionFactory cachingConnectionFactory = new 
CachingConnectionFactory(factory);
    cachingConnectionFactory.setCacheConsumers(true);
    cachingConnectionFactory.setCacheProducers(true);
    cachingConnectionFactory.setSessionCacheSize(16);`

我试过了

1)在listenerContainerplatformTransactionManager 之间共享jmsConnectionFactory,但由于我看到消息以错误的顺序发送,因此 txn 无法正常工作

2) 使用 cachingConenctionFactory in thelistenerContainer` ,但我仍然看到相同的号码。连接数

我应该为侦听器、txnmanager 和发送者使用 3 个不同的 jmsConnectionFactory 吗?

这里最好的配置,请建议,非常感谢!

【问题讨论】:

    标签: spring-integration ibm-mq spring-jms


    【解决方案1】:

    我认为对于 IBM MQ,您不能使用 CachingConnectionFactory,而是将其用作:

    <bean id="connectionFactory" class="org.springframework.jms.connection.DelegatingConnectionFactory">
        <property name="targetConnectionFactory" ref="imbMqFactory"/>
        <property name="shouldStopConnections" value="true"/>
    </bean>
    

    这个connectionFactory 必须在 TX 管理器和容器中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      相关资源
      最近更新 更多