【问题标题】:JmsTransactionManager with more connectionFactoriesJmsTransactionManager 具有更多的 connectionFactories
【发布时间】:2011-04-01 12:11:51
【问题描述】:

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

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

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

【问题讨论】:

  • 显示你的配置而不是描述它;)

标签: spring jms transactionmanager spring-jms


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以将 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>
    

    【讨论】:

    • 那不行,要让事务工作,你需要给Spring一个PlatformTransactionManager,你这里做的是有效的语法但是第二个JmsTransactionManager不能用
    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 2016-06-25
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2020-06-22
    相关资源
    最近更新 更多