2016-03-30 25 views
0

私はメッセージをexchangeからキューにルーティングする必要があるのでしょうかと疑問に思っています。単純なキュー名を使ってメッセージをルーティングすることはできません。また、複数のキューにパブリッシュする場合は、複数のキュー名を使用できます。誰かが実際にルーティングキーを必要とするシナリオを指摘できますか、キュー名では十分ではありません。rabbitmqにルーティングキーが必要なのはなぜですか

答えて

1

交換にはいくつかの種類があります。ファンアウト交換機はルーティングキーを無視し、すべてのキューにメッセージを送信します。しかし、他のすべての交換タイプは、ルーティングキーを使用して、ある場合にはどのキューがメッセージを受信するかを決定します。

tutorials on the RabbitMQ websiteには、さまざまな交換タイプが有用で、ルーティングキーが関連するいくつかの用途が記載されています。

たとえば、は、トピック交換を使用して、各メッセージのログレベルに応じてログメッセージをさまざまなキューにルーティングする方法を示します。

複数のキューを対象にする場合は、それらをファンアウト交換にバインドし、その交換をパブリッシャで使用する必要があります。

パブリッシャに複数のキュー名を指定することはできません。 AMQPでは、キューにメッセージをパブリッシュせず、エクスチェンジにメッセージをパブリッシュします。関連するキューを決定するのはExchangeの責任です。メッセージが全くキューに送られずにドロップされた可能性があります。

+0

ok。交換とキューの間にルーティングキーが必要なのはなぜですか。ファンアウト交換を使用して、すべてのキューにメッセージを送信できます。同様に、特定のキューまたは複数のキューに送信する場合。キュー自体の名前を使用することはできません。なぜ特殊な "ルーティングキー"の概念が必要なのですか? – Naresh

+0

キュー名をルーティングキーに入れて、デフォルトのエクスチェンジ(空の文字列で指定されたechange)に公開することができます。メッセージは目的のキューに入れられます。ルーティングキーとさまざまなタイプのエクスチェンジは、メッセージをキューにルーティングする方法の柔軟性を高めます。また、パブリッシャとコンシューマをさらに切り離すこともできます。もう1つのメリットは、ルーティング情報をパブリッシャからそれが所属するバスに移動することです。 –

関連する問題