0

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 にメッセージを戻す

すべての再配信が失敗すると、ロールバックがトリガーされます。

ただし、このロールバック中に何が起こるかは私を混乱させます。メッセージがどこで終わるかはわかりません。確かにソース キューにも、エラー キューにも行きません。では、このロールバック中に実際に何が起こっているのでしょうか?

4

1 に答える 1