私のアプリケーションは、Glassfish 3.1.2 サーバーで JMS メッセージを使用し、OpenMQ を JMS プロバイダーとして使用します。
コンシューマがメッセージの処理に失敗すると、奇妙な動作が発生します。この場合、Glassfish はメッセージを Dead Message Queue に正しく移動します (2 回試行した後)。そして、これは問題ありません。
サーバーを再起動すると、DMQ に保存されたメッセージが元の宛先に再度送信されます (これは問題ありませんが、この動作は予期していませんでした)。これで、コンシューマーが成功した場合でも、メッセージは destination に残ります。
サーバーをもう一度再起動すると、メッセージが再び消費されるため、これは正しくありません。奇妙なことに、今度はメッセージがキューから完全に削除されます。
質問は次のとおりです。
- メッセージがキューに残っているのはなぜですか?
- また、再起動後に GF がメッセージを DMQ から元のメッセージに自動的に移動しようとするのはなぜですか?