3

アプリケーションで Jboss MQ を使用しています。

JMS キューに再配信されたメッセージを処理しようとしています。コンシューマーで受信した元のメッセージにいくつかの値を設定する方法はありますか (メッセージを初めて受信したとき) メッセージが再配信されるたびに、値を読み取っていくつかの決定を下すことができます。

質問が明確でない場合はお知らせください。詳しく説明できるよう努めます。

4

2 に答える 2

6

いいえ、JMSはそのようには機能しません。

コンシューマー(受信)、プロデューサー(送信)、またはブラウザー(ピーク)としてキューを操作します。変更したメッセージを元に戻す操作はありません。コンシューマーがロールバックされるトランザクションで作業している場合、メッセージは「プットバック」されているように見えますが、これは、トランザクションのコミットをキューで待機していたためです。

理論的には、メッセージを取得したのと同じキューのプロデューサーを作成し、それを変更して「自分宛て」(メッセージドライブBean?)に送信できますが、それは別のメッセージであり、内容は似ています。そして、それはキューの最後に到達します。そして、そうすることは確かに推奨されていません。

メッセージデータ(少なくとも関心のある部分)をデータベースに保持して、それが新しいか再配信されたかを検出することをお勧めします。

于 2011-09-15T18:46:39.827 に答える
1

エンタープライズ統合パターン Content Enricher ( 1 ) ( 2 ) が役立つかもしれません。

于 2012-11-12T13:03:20.073 に答える