RabbitMq 话题交流

RabbitMq topic exchange

是否可以使用RabbitMQ topic exchange实现如下场景

假设我有两个队列:

Queue1:路由键 MainRoute.Route1

Queue2:路由键 MainRoute.Route2

当我使用路由密钥发布消息时:

MainRoute.Route1 -> Queue1

MainRoute.Route2 -> Queue2

MainRoute -> Queue1 和 Queue2

是否可以在不实施一些特殊的过滤、路由过程的情况下实现这一目标?

如果不能,请提供解决问题的可能方案。

谢谢。

这可以通过直接或主题交换来完成,并且需要在您的交换中进行 4 次绑定。

假设一个名为 "MainEx" 的交易所为例,路由键将设置如下:

| exchange | binding          | queue  |
| -------- | ---------------- | ------ |
| MainEx   | MainRoute.Route1 | Queue1 |
| MainEx   | MainRoute.Route2 | Queue2 |
| MainEx   | MainRoute        | Queue1 |
| MainEx   | MainRoute        | Queue2 |

通过主题交换,您可以使用标志将多条消息发送到单个队列。例如,将 "MainRoute.#" 绑定到 "Queue3" 会将 all MainRoute 消息发送到 Queue3。

但是,没有办法用单一绑定做相反的事情。您需要创建多个绑定来执行您想要的操作。