我对事务和HornetQ原生应用程序接口有一个基本的怀疑。
如果我的应用程序是基于Spring的,使用Spring管理的事务,我应该如何配置HornetQ来参与Spring管理的同一事务?
使用JMS API我猜这是相当明显的,因为Spring认为JMS资源是事务性的。
但我不知道如何正确使用nativa API。有人能解释一下这个问题吗?
非常感谢!
发布于 2011-10-05 02:38:13
HornetQ在核心应用程序接口上支持XA,它们只是资源。
如果只是使用常规的XA,您应该能够在Spring上征募这些资源。
http://docs.jboss.org/hornetq/2.2.5.Final/api/org/hornetq/api/core/client/ClientSession.html
不过,我不确定Spring上的集成是如何完成的。如果有任何不能工作的地方,可以(也应该)在spring集成模块上进行修复或改进。
发布于 2011-10-11 09:00:19
不确定我是否理解正确,但如果您试图仅使用Spring和@ transaction注解为JMS简单地进行声明性事务管理,那么只需使用 = "myTransactionManager“/>,然后-对于"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/
https://stackoverflow.com/questions/7641521
复制相似问题