正しい一時キューは、RPC要求を行うクライアントに固有です。RPCクライアントを作成して、一意のリクエストごとに一意のキューを作成することもできますが、それは非効率的です。ここでCorrelationIdの最初の段落を参照してください。
上記の方法では、RPCリクエストごとにコールバックキューを作成することをお勧めします。これはかなり非効率的ですが、幸いなことに、より良い方法があります。クライアントごとに1つのコールバックキューを作成しましょう。
したがって、より良い方法は、RPCクライアントが応答を返す1つのキューを用意し、correlationIdを使用して、RPCクライアントが行う要求をRPCサーバーが送り返す結果に一致させることです。
...そのキューで応答を受信したため、応答がどの要求に属しているかが明確ではありません。そのとき、correlation_idプロパティが使用されます。リクエストごとに一意の値に設定します。後で、コールバックキューでメッセージを受信すると、このプロパティを確認し、それに基づいて応答と要求を照合できるようになります。不明なcorrelation_id値が見つかった場合、メッセージを安全に破棄できます。これはリクエストに属していません。
したがって、RPCチュートリアルの概要セクションを参照してください。
- クライアントが起動すると、排他的で一意のキューが作成されます
- RPC要求を送信するとき、キュー名であるreply_toを設定し(サーバーは応答を送信するキューを認識します)、RPC要求ごとに一意の値であるcorrelationIdも設定します。
- リクエストはRPCキューに送信されます
- RPCワーカー(またはサーバー)は要求を受信して処理し、reply_to値を使用して応答をクライアントに送り返します。また、correlationIdも設定します。
- RPCクライアントは応答を待機し、応答を受信すると、correlationIdを使用して応答を要求と照合します