0

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

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

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

4

2 回答 2

1

如果您需要对多个 JMS 会话进行事务访问,则必须使用 JTA。在这种情况下,您根本不会使用 JmsTransactionManager,您将使用 JtaTransactionManager 并在分布式事务中登记所有这些连接。这假定您的所有 JMS 连接都是 XA 兼容的(连接工厂通常是不同的,例如 ActiveMQXAConnectionFactory 与 ActiveMQConnectionFactory)。

如果您不使用应用程序服务器(glassfish、weblogic、jboss AS 等),您可以部署独立的 JTA 实现(atomikos 或 jboss TS)。它们中的每一个的配置都有很大的不同,但 Spring 确实支持其中的大多数。

于 2011-04-03T07:10:29.877 回答
-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>
于 2011-04-03T07:03:03.630 回答