我想知道是否有人可以帮我解决一个大问题,我正在尝试使用Spring 2.5.6实现更多jmsTransactionManagers,但它无法正常工作。
我有5个连接因素,因为我必须从5个不同的环境中读写。它们都在我的队列xml bean中,但是因为当我从一个队列中读取消息并且它们不符合选项时,我会使用事务管理器进行回滚。
所以我的问题是,如何配置更多的JmsTransactionManagers。
答案 0 :(得分:1)
如果您需要对多个JMS会话进行事务访问,则必须使用JTA。在这种情况下,您根本不会使用JmsTransactionManager,您将使用JtaTransactionManager并在分布式事务中登记所有这些连接。这假设您的所有JMS连接都是XA兼容的(通常连接工厂不同,例如ActiveMQXAConnectionFactory与ActiveMQConnectionFactory)。
如果您没有使用应用程序服务器(glassfish,weblogic,jboss AS等),您可以部署独立的JTA实现(atomikos或jboss TS)。它们各自的配置有很大不同,但Spring确实支持其中大部分。
答案 1 :(得分:-1)
您可以将connectionFactory的引用添加到事务管理器
<bean class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="connectionFactory1"></property>
</bean>
<bean class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="connectionFactory2"></property>
</bean>