RabbitMQ Exchange捕获所有

时间:2016-07-27 15:38:09

标签: routing rabbitmq

在rabbitmq中给出

  • 交换
  • 两个名为默认特定
  • 的队列
  • 两个路由键 all.specific all。*

采用以下方案

enter image description here

我试图实现以下(没有成功)

  • 如果路由密钥为“all.specific”的邮件到达,则必须路由到特定队列

  • 如果路由密钥为“all.generic”的邮件到达,则必须路由到默认队列

我尝试了两种不同的方法

1)交换类型'直接'

我无法在路由键中使用通配符,因此我无法路由'all.generic','all.another_generic'和许多其他传入消息

2)交换类型'主题'

它将'all.generic','all.another_generic'路由到默认队列,但'all.specific'到达两个队列,为什么我只想要到达特定队列。

我认为我以错误的方式使用交换和队列,但我无法理解如何以正确的方式实现这一点。 你能救我吗?

1 个答案:

答案 0 :(得分:2)

您最好的选择是在绑定和路由键中找不到。

我会查看替代交易所。

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

使用AE,您基本上可以拥有一个"全部捕获"交换任何与其发布的交易所中的某个绑定不匹配的消息。

在您的情况下,您的交换只有all.specific绑定才能将消息发送到specific队列。

备用交换将直接将消息传递到generic队列。这可以通过主题来完成,以重用相同的路由键。或者它可以作为扇出交换完成,只有一个队列绑定它。