2

春の統合を使用して、JMS 経由で他のシステムに情報を送信しています。現在、システムには次の手順があります。

  1. Oracle データベースのステータスを「承認済み」に更新します。
  2. JMS メッセージを外部システムに送信します。
  3. 専念

を。では、(2)で JMS の送信に失敗した場合はどうなるでしょうか。どうすればDBを知り、ロールバックできますか? b. (3)のコミットが失敗したら?どのようにロールバックしますか?

コードまたはサンプル構成の例が役立ちます。

ありがとうGM

4

2 に答える 2

3

Spring トランザクション同期(Spring Integration でサポート) を使用して、2 つのトランザクションを同期できます。これにより、Dave Syer 博士の Javaworld Articleで説明されているように、ベスト エフォート 1PC が提供されます。絶対的な保証が必要な場合は、XA を使用する必要がある場合があります。

于 2013-08-12T12:58:20.747 に答える
3

Best Effort 1PC には、Spring Data の ChainedTransactionManager を使用することもできます。これは XA と同じくらい安全ですが、両方のシステムが一貫して XA を使用していない場合、受信者側で重複メッセージを処理する必要があります。このブログ投稿では、ベスト エフォート 1PC を使用して、受信トランザクション処理と送信トランザクション処理の両方を分離する方法について説明します。

于 2013-11-08T12:55:24.420 に答える