RabbitMQ - 路由密钥与绑定密钥中的通配符

时间:2014-03-20 22:52:24

标签: routing rabbitmq

我使用rabbitmq将消息从单个服务器发送到多个客户端。我想向所有客户发送消息,所以我创建了一个他们都绑定的交换。这非常有效。但是,如果我想根据路由密钥中的通配符(而不是绑定密钥)向少数这些客户端发送消息,该怎么办?例如,我说过红客户,蓝客户和绿客户。有时我希望所有客户都收到消息,有时我只想要蓝色,或者只是蓝色和红色。这是一个简化的例子。为了扩展到我的实际系统,想象我有数百种颜色"区别。我无法弄清楚如何执行此操作,因为通配符似乎只存在于绑定键而非路由键中。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:22)

我认为你试图用一个队列做太多事情。考虑到您提前知道消息是发送给所有客户还是只发送一个客户端,那么您应该设置两个交换机。一个作为主题,或直接,客户端将只获取专门为他们设置的消息,另一个作为扇出交换,将分发到将由所有客户端读取的不同队列集。标题交换可以为您提供所需的灵活性,另一种可能性是编写自定义交换以完全满足您的需求。