2016-10-20 17 views
1

4人のサブスクライバを持つトピックにメッセージ(特定のの相関ID)を配置するアプリケーションがあります。メッセージが配置されると、メッセージは4人のサブスクライバによって消費され、応答を出していますキューと同じ相関ID(reply = 4messages)を持っています。メッセージがの重複相関IDを持っていると疑いがあります。要求に相関IDが含まれているメッセージを検索しているときにどのメッセージを消費するのかを消費者はどのように知るでしょうか?同じJMS相関IDを持つメッセージの重複

+0

興味深いシナリオ。すべての加入者が同じメッセージを処理して返信する理由は何ですか?各加入者はメッセージを別々に処理しますか? – Shashi

+0

いいえ、彼らはメッセージを別々に処理しません。同じ方法で処理します(この質問を投稿した問題です)。なぜ、トピックにブロードキャストするために書かれたのですか。 – priya

+0

考えているのは、複数のサブスクライバ間でロードバランシングを行い、サブスクライバの1人だけがメッセージを処理して応答するというものでした。 – Shashi

答えて

1

重複するJMSCorrelationIDに固有の問題はありません。応答に関心を持つ消費者は、一般にセレクタ(すなわち、JMSCorrelationID = 'ID-XXX ...')を有する消費者を作成する。そのコンシューマは、メッセージを含むすべてのメッセージを、指定された相関IDで照合します。

4つの応答のそれぞれを個別に処理する必要がある場合は、カスタムメッセージプロパティがどのメッセージが元のトピックのサブスクライバからのものかを判断する規則を定義する必要があります。

+0

返事のMattさんありがとうございます。しかし、私は4つのメッセージのうち1つだけが消費されていることを観察しました。他の3つは永遠にキューに残ります。メッセージが消費されるのはFCFSの方法ですか? – priya

+0

すべてのサブスクライバが応答しているため、応答キューには4つの応答があります。返信メッセージを処理しているアプリケーションは、最初の返信を処理して他のものをキューに残しているだけです。 – Shashi

+0

はいShashi、私は私のアプリケーションからそれを観察しました。私はこの実装を参照する技術的なパブがあるかどうかを知りたいだけです。 – priya

関連する問題