我對事務和HornetQ本地API有一個基本的疑問。我應該使用HornetQ JMS API與Spring TransactionManager集成嗎?
如果我的應用程序是基於Spring的,使用Spring管理的事務,我應該如何配置HornetQ參與由Spring(AOP)管理的同一個事務?
使用JMS API我猜這很明顯,因爲Spring將JMS資源視爲事務性的。
但我不知道如何正確使用nativa API。有人可以解釋這個問題嗎?
非常感謝!
我對事務和HornetQ本地API有一個基本的疑問。我應該使用HornetQ JMS API與Spring TransactionManager集成嗎?
如果我的應用程序是基於Spring的,使用Spring管理的事務,我應該如何配置HornetQ參與由Spring(AOP)管理的同一個事務?
使用JMS API我猜這很明顯,因爲Spring將JMS資源視爲事務性的。
但我不知道如何正確使用nativa API。有人可以解釋這個問題嗎?
非常感謝!
HornetQ在覈心API上支持XA,它們只是資源。
如果這只是使用普通的XA API,你應該可以在Spring上獲得這些資源。
http://docs.jboss.org/hornetq/2.2.5.Final/api/org/hornetq/api/core/client/ClientSession.html
我不知道雖然這集成如何在春季完成。如果有什麼不能工作,它可以(也應該)在彈簧集成模塊上進行修復或改進。
不知道我是否理解正確,但如果您試圖簡單地使用Spring和JUST JMS的@Transactional註釋來執行聲明式事務管理,那麼只需使用< tx:註釋驅動的事務管理器=「myTransactionManager 「/ >,然後 - 對於‘myTranactionManager,’註冊類型一個JmsTransactionManager豆,例如,
@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/