以下を理解するのに助けてください:
私はCachingConnectionFactory
自分のアプリで使用しており、最初にjmsテスト中にそれを使用して、保証された配信、ロールバック/コミットなどのjms構成をテストしました。
JmsTemplate
送信DefaultMessageListenerContainer
時と配信時にSpringを使用しています。
複数のテストメソッドを使用してシーケンシャルに実行する場合、これは難しい/不可能であることに気付きました。例:テストメソッドでは、AIがメッセージリスナー(コンシューマー側)で例外をスローし、再試行が発生します。次に、テストBが実行され、メソッドAIで別のテストが実行されますが、このテストを開始しても、テストAから再試行メッセージが表示されます。これは明らかに望ましくありません。テストの合間にjmxを介してキューをパージしますが、それでもこれらの再試行を受け取ります:(...検索してデバッグしました...パージが正しく行われたと確信している場合でも、なぜこれらの再試行が発生し続けるのか正確にはわかりません。たぶん、セッションのどこかにすでにキャッシュされていたのかもしれません...わかりません。
SingleConnectionFactory
テスト中に使用する必要があることがわかりました。この接続ファクトリを使用すると、再試行はなくなりますが、その理由はよくわかりません。なんで?(Spring refからの)接続を1つだけ使用していることを理解し、送信アクションごとにコンシューマーが削除されることに気付きましたが、これらの再試行で何が起こるかはよくわかりません:(...何か考えはありますか?(マルチスレッドの動作のためにデバッグが難しく、Web上でそれに関する適切な情報を見つけるのが困難です)また、CachingConnectionFactory
1つのセッションキャッシュサイズ1のみで使用しても、再試行の問題は解決しませんでした。
ありがとう