我有一个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)在jmsConnectionFactory
和listenerContainer
之间共享platformTransactionManager
,但txn无法正常工作,因为我看到邮件的发送顺序不正确
2)使用cachingConenctionFactory in the
listenerContainer`,但我仍然看到相同的no。连接
我应该为听众,jmsConnectionFactory
和发件人使用3个不同的txnmanager
吗?
这里最好的配置是什么,请提出建议,非常感谢!
答案 0 :(得分:0)
我认为使用IBM MQ时,您无法使用CachingConnectionFactory
,而是将其作为:
<bean id="connectionFactory" class="org.springframework.jms.connection.DelegatingConnectionFactory">
<property name="targetConnectionFactory" ref="imbMqFactory"/>
<property name="shouldStopConnections" value="true"/>
</bean>
必须从TX管理器和容器中使用此单connectionFactory
。