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

Routing RabbitMQ-路由密钥与绑定密钥中的通配符,routing,rabbitmq,Routing,Rabbitmq,我使用rabbitmq将消息从单个服务器发送到多个客户端。我想向所有客户发送一条消息,因此我创建了一个他们都绑定到的交换。这很有效。但是,如果我想根据路由密钥(而不是绑定密钥)中的通配符向少数这些客户机发送消息,该怎么办。例如,我说红色客户、蓝色客户和绿色客户。有时候我希望所有的客户都能收到消息,有时候我只想要蓝色,或者蓝色和红色。这是一个简化的例子。为了将其扩展到我的实际系统,假设我有数百个“颜色”区分。我不知道如何做到这一点,因为通配符似乎只存在于绑定键中,而不存在于路由键中 如果您有任何建

我使用rabbitmq将消息从单个服务器发送到多个客户端。我想向所有客户发送一条消息,因此我创建了一个他们都绑定到的交换。这很有效。但是,如果我想根据路由密钥(而不是绑定密钥)中的通配符向少数这些客户机发送消息,该怎么办。例如,我说红色客户、蓝色客户和绿色客户。有时候我希望所有的客户都能收到消息,有时候我只想要蓝色,或者蓝色和红色。这是一个简化的例子。为了将其扩展到我的实际系统,假设我有数百个“颜色”区分。我不知道如何做到这一点,因为通配符似乎只存在于绑定键中,而不存在于路由键中


如果您有任何建议,我们将不胜感激。

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

RabbitMQ站点上有很好的教程,请仔细查看,它应该会对您有所帮助。谢谢,但主题交换并不是我所需要的。我想另一种说法是:我希望服务器控制消息分发,而不是客户端。客户机可以在其绑定密钥中放入通配符以接收所有消息,但服务器不能在路由密钥中放入通配符以便所有客户机接收该消息,而不管它们的绑定密钥如何。有没有办法获得此功能?我希望服务器发送一条消息,并将其发送到特定客户端的列表中。谢谢!我认为你是对的。我会投你一票,但我还没有足够的代表权。