私はRabbitMQを非同期呼び出しに使用するSpringブートアプリケーションを持っています。 リスナー(コンシューマ)では、ルーティングキーをどこかから取得したいのですか? 可能ですか?手伝っていただけませんか ?リスナーでルーティングキーを取得する方法はありません
ありがとうございました。
私はRabbitMQを非同期呼び出しに使用するSpringブートアプリケーションを持っています。 リスナー(コンシューマ)では、ルーティングキーをどこかから取得したいのですか? 可能ですか?手伝っていただけませんか ?リスナーでルーティングキーを取得する方法はありません
ありがとうございました。
まず、消費者向けのルーティングキーがないことを認識する必要があります。コンシューマはキューからメッセージを取得します。メッセージは、1つまたは複数のExchangeからキューに入れられます。ルーティングキーは、キューとコンシューマ間ではなく、交換とキュー間の関係のプロパティです。
ルーティングキーattention
exchangeによって直接交換にバインドされたキューは、配信タグattention
を持つすべてのメッセージをそのキューに入れます。キューは、多くのルーティングキーを持つ複数の境界を持つことがあります。
したがって、コンシューマのコンテキストでルーティングキーについて話すとき、実際にはメッセージの配信タグを意味します。
queue.bindおよびbasic.deliveryを参照してください。
AMPQのキューバインディングに関する情報を取得する方法があるかどうかは不明です。ここで
これは誤解を招くような回答です。発行中に使用された元のルーティングキーを取得する方法があります。 – theMayer
コードです:
message.getMessageProperties().getHeader().getReceivedRoutingKey();
私はので、私は、ルーティングキーに到達することができませんでした私のプロジェクトでは、いくつかのミスを犯してきました。私は私の問題の根本原因を見つけたので、上記のコードは問題を解決しました。
メッセージの発行にもともと使用されたルーティングキーは、AMQP 0-9-1仕様のBasic.Deliverイベント引数の一部です。
使用しているコードとRabbitMQクライアントライブラリの具体例がない場合は、これが一般的な答えです。特定のRabbitMQ実装内で、配信イベントargsにアクセスする方法を見つけることができれば、ルーティングキーを含める必要があります。そうでない場合は、仕様に準拠した別のクライアントライブラリを選択することをお勧めします。
ここに便利なチュートリアルがあります:https://www.rabbitmq.com/tutorials/tutorial-three-java.html –