JmsTransactionManager具有更多connectionFactories

时间:2011-04-01 12:11:52

标签: spring jms transactionmanager spring-jms

我想知道是否有人可以帮我解决一个大问题,我正在尝试使用Spring 2.5.6实现更多jmsTransactionManagers,但它无法正常工作。

我有5个连接因素,因为我必须从5个不同的环境中读写。它们都在我的队列xml bean中,但是因为当我从一个队列中读取消息并且它们不符合选项时,我会使用事务管理器进行回滚。

所以我的问题是,如何配置更多的JmsTransactionManagers。

2 个答案:

答案 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>