我正在使用 rabbitmq 将消息从单个服务器发送到多个客户端。我想向所有客户发送消息,所以我创建了一个他们都绑定(bind)到的交换。这很好用。但是,如果我想根据路由键(而不是绑定(bind)键)中的通配符向少数这些客户端发送消息怎么办。例如,我说红色客户端、蓝色客户端和绿色客户端。有时我希望所有客户端都收到消息,有时我只想要蓝色,或者只想要蓝色和红色。这是一个简化的例子。要将其扩展到我的实际系统,假设我有数百个“颜色”区别。我无法弄清楚如何做到这一点,因为通配符似乎只存在于绑定(bind)键而不是路由键中。
任何建议将不胜感激。
最佳答案
我认为你试图用一个队列做太多事情。考虑到您提前知道消息是发送给所有客户端还是只发送给一个客户端,那么您应该设置两个交换。一个作为主题或直接,客户端将仅获取专门为他们准备的消息,另一个作为扇出交换,将分发到将由所有客户端读取的一组不同的队列。 header 交换也可以为您提供所需的灵 active ,另一种可能性是编写自定义交换来完全满足您的需要。
关于routing - RabbitMQ - 路由键与绑定(bind)键中的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22546840/