2016-07-27 50 views
1

在RabbitMQ的給定RabbitMQ的交流與包羅萬象的

  • 交換
  • 2隊列命名默認具體
  • 兩個路由鍵all.specific所有。*

下面的方案

enter image description here

我想實現以下(沒有成功)

  • 如果具有路由鍵「all.specific」的消息到達必須路由到特定隊列

  • 如果具有路由鍵'all.generic'的消息到達必須路由到默認隊列

我嘗試了兩種不同的approaces

1)交換式「直接」

路由關鍵我不能使用通配符,所以我無法路由「all.generic」,「所有.another_generic」和許多其他的傳入消息

2)交換型 '主題'

它路由 'all.generic', 'all.another_generic' 至d默認隊列,但'all.specific'到達兩個隊列,爲什麼我只想要到達特定的隊列。

我認爲我在錯誤的方式使用交換和隊列,但我不明白如何以正確的方式實現這個,rabbitmq方式。 你能幫我嗎?

回答

2

您的最佳選擇是在綁定和路由鍵中找不到。

我會看看替代交換,而不是。

https://www.rabbitmq.com/ae.html

隨着AE,你基本上可以有不符合的地方被刊登在交換綁定之一的任何消息「一網打盡」的交流。

在您的情況下,您的交易所將只有all.specific綁定才能將消息發送到specific隊列。

備用交換機將直接向generic隊列發送消息。這可以通過主題完成,以重新使用相同的路由密鑰。或者它可以作爲扇出交換來完成,並且只有一個隊列綁定到它。