2

トランザクションと HornetQ ネイティブ API に関して基本的な疑問があります。

アプリケーションが Spring ベースで、Spring 管理のトランザクションを使用している場合、Spring (AOP) が管理する同じトランザクションに参加するには、HornetQ をどのように設定すればよいですか?

JMS API を使用すると、Spring は JMS リソースをトランザクションと見なすため、かなり明白だと思います。

しかし、nativa API を使用して正しく行う方法がわかりません。誰かがこの問題に光を当てることができますか?

どうもありがとう!

4

2 に答える 2

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でどのように行われるかはわかりません。機能していないものがあれば、Spring 統合モジュールで修正または改善することができます (また、修正する必要があります)。

于 2011-10-04T18:38:13.410 に答える
1

私が正しく理解しているかどうかはわかりませんが、Spring と JUST JMS の @Transactional アノテーションを使用して宣言的なトランザクション管理を単純に行おうとしている場合は、単に <tx:annotation-driven transaction-manager = "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/を参照してください。

于 2011-10-11T01:00:19.277 に答える