アプリケーションで Jboss MQ を使用しています。
JMS キューに再配信されたメッセージを処理しようとしています。コンシューマーで受信した元のメッセージにいくつかの値を設定する方法はありますか (メッセージを初めて受信したとき) メッセージが再配信されるたびに、値を読み取っていくつかの決定を下すことができます。
質問が明確でない場合はお知らせください。詳しく説明できるよう努めます。
アプリケーションで Jboss MQ を使用しています。
JMS キューに再配信されたメッセージを処理しようとしています。コンシューマーで受信した元のメッセージにいくつかの値を設定する方法はありますか (メッセージを初めて受信したとき) メッセージが再配信されるたびに、値を読み取っていくつかの決定を下すことができます。
質問が明確でない場合はお知らせください。詳しく説明できるよう努めます。
いいえ、JMSはそのようには機能しません。
コンシューマー(受信)、プロデューサー(送信)、またはブラウザー(ピーク)としてキューを操作します。変更したメッセージを元に戻す操作はありません。コンシューマーがロールバックされるトランザクションで作業している場合、メッセージは「プットバック」されているように見えますが、これは、トランザクションのコミットをキューで待機していたためです。
理論的には、メッセージを取得したのと同じキューのプロデューサーを作成し、それを変更して「自分宛て」(メッセージドライブBean?)に送信できますが、それは別のメッセージであり、内容は似ています。そして、それはキューの最後に到達します。そして、そうすることは確かに推奨されていません。
メッセージデータ(少なくとも関心のある部分)をデータベースに保持して、それが新しいか再配信されたかを検出することをお勧めします。