【问题标题】:Should I use HornetQ JMS API to integrate with Spring TransactionManager?我应该使用 HornetQ JMS API 与 Spring TransactionManager 集成吗?
【发布时间】:2011-11-30 06:56:05
【问题描述】:

我对 Transactions 和 HornetQ 原生 API 有一个基本的疑问。

如果我的应用程序是基于 Spring 的,使用 Spring 管理的事务,我应该如何配置 HornetQ 以参与由 Spring (AOP) 管理的同一事务?

使用 JMS API 我想这很明显,因为 Spring 将 JMS 资源视为事务性资源。

但我不知道如何正确使用 nativa API。有人能解释一下这个问题吗?

非常感谢!

【问题讨论】:

    标签: spring transactions jms hornetq


    【解决方案1】:

    HornetQ 在核心 API 上支持 XA,它们只是资源。

    如果只是使用常规 XA API,您应该能够在 Spring 上获取这些资源。

    http://docs.jboss.org/hornetq/2.2.5.Final/api/org/hornetq/api/core/client/ClientSession.html

    我不确定这种集成是如何在 Spring 上完成的。如果有什么不工作,它可以(并且应该)在弹簧集成模块上修复或改进。

    【讨论】:

      【解决方案2】:

      不确定我的理解是否正确,但如果您尝试使用 Spring 和 JUST JMS 的 @Transactional 注释简单地进行声明性事务管理,那么只需使用 然后 - 对于“myTranactionManager”,注册一个 JmsTransactionManager 类型的 bean,例如,

      @Bean public PlatformTransactionManager myTranactionManager (){ 
        return new JmsTransactionManager( this.connectionFactory());
      } 
      

      现在,您可以正常使用注解,JMS 交互将被包装在事务中

      @Transactional
      public void doSomethingWithJms(){ 
        jmsTemplate.send(...);
        jmsTemplate.convertAndSend(...)
      }
      

      如果您的目标是使用多个资源,例如 JMS JDBC,那么您需要使用 JTA。要了解如何设置 JTA(对于 JPA JMS),请查看这篇博文 http://blog.springsource.com/2011/08/15/configuring-spring-and-jta-without-full-java-ee/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-03
        • 2019-05-28
        • 2011-10-01
        • 2012-06-14
        • 1970-01-01
        • 2011-12-23
        • 1970-01-01
        • 2014-07-11
        相关资源
        最近更新 更多