2016-04-13 10 views
0

私はアプリケーションを持っていて、それの複数のインスタンスが異なるサーバ上で実行されています。 1つのサーバーがメッセージをトピックに公開しています。複数のキューがメッセージを取得し、処理されたレスポンスは別のキューに入れられます。リクエストを送信したサーバと同じサーバにキューからの応答を返す

開始アプリケーションのすべてのインスタンスがこのキューに登録されています。この要求を行った同じアプリケーションインスタンスがキューから応答を取得していることを確認するにはどうすればよいですか。

現在、複数のインスタンスのうち、ランダムなものが取得されています。しかし、私はそれが起源であるインスタンスでそれを取得したい。

+0

好奇心が強い。パブリッシャにメッセージを処理させたい、つまり元のインスタンスもメッセージを処理する必要がある場合は、なぜそれらを最初にキューに入れたいのですか。 – Madhusudhan

+0

ここで、元のインスタンスはその応答をUIに返す必要があります。つまり、リクエストはREST API経由のUIからインスタンスの1つに送られ、メッセージがキューに入れられ、要求が処理されると、リクエストしているアプリケーションのすべてのインスタンスがリッスンしているキューに格納されます。私がインスタンスを起動して取得した場合、UIに返すことができます。 –

答えて

1

JMSプロパティを使用して、元のメッセージの送信元を識別し、応答に同じプロパティを含め、元のプロデューサにメッセージセレクタを使用させて適切なメッセージのみを受け取らせます。私はこのテクニックを何度も使用してきましたが、非常に効率的です(おそらく異なるプロバイダは異なるオーバーヘッドを持つ可能性があります)。

セレクタをあなたの友人にすることができます。

+0

JMSCorelationIdにインスタンス識別子を渡して、最終キューに戻ってきます。 JMSでセレクタを適用できました。今私はCamelを使い、エンドポイントuriを指定しています。エンドポイントuriのJMScorelationISのセレクタをパラメータとして指定するにはどうすればよいですか? –

+0

セレクタジョブを実行すると思います。selector = JMSCorrelationID%3D'Server01 ' –

関連する問題