2011-10-03 82 views
2

我對事務和HornetQ本地API有一個基本的疑問。我應該使用HornetQ JMS API與Spring TransactionManager集成嗎?

如果我的應用程序是基於Spring的,使用Spring管理的事務,我應該如何配置HornetQ參與由Spring(AOP)管理的同一個事務?

使用JMS API我猜這很明顯,因爲Spring將JMS資源視爲事務性的。

但我不知道如何正確使用nativa API。有人可以解釋這個問題嗎?

非常感謝!

回答

1

不知道我是否理解正確,但如果您試圖簡單地使用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/