JMS と Spring Integration について質問があります。
3 つのキューがあります。QUEUE_SOURCE、QUEUE_TARGET、QUEUE_ERROR と呼びましょう。DefaultMessageListenerContainer は、QUEUE_SOURCE からメッセージを読み取るために使用されます。
これらのキュー用に JMS トランザクション マネージャーを構成しました。
QUEUE_SOURCE から読み取ると、メッセージを QUEUE_TARGET に投稿するときにエラーが発生し、例外がスローされる前にメッセージが数回再試行され、ロールバックがトリガーされることがわかります。
何が起こるかはこれだと思います:
1) トランザクションを開始します 2) メッセージを読み取ります 3) ターゲット キュー QUEUE_TARGET にメッセージを投稿しようとしますが、失敗します 4) エラーのためにコミットしないため、メッセージは QUEUE_SOURCE から削除されません
また
1) トランザクションを開始する 2) メッセージを読む 3) QUEUE_SOURCE からメッセージを削除する 4) ターゲット キュー QUEUE_TARGET にメッセージを投稿しようとするが、失敗する 5) QUEUE_SOURCE にメッセージを戻す
すべての再配信が失敗すると、ロールバックがトリガーされます。
ただし、このロールバック中に何が起こるかは私を混乱させます。メッセージがどこで終わるかはわかりません。確かにソース キューにも、エラー キューにも行きません。では、このロールバック中に実際に何が起こっているのでしょうか?