给出RabbitMQ topic
交换,例如x1
的消费者队列绑定如下:
"source": "x1",
"vhost": "rabbit",
"destination": "queue1",
"destination_type": "queue",
"routing_key": "A.*",
"arguments": {}
我现在想将一些匹配A.*
的消息路由到不同的队列。例如,A.a
应该转到queue2
,而所有其他A.*
仍然应该queue1
。 queue2
的绑定将如下所示:
"source": "x1",
"vhost": "rabbit",
"destination": "queue2",
"destination_type": "queue",
"routing_key": "A.a",
"arguments": {}
queue1
的绑定应如何排除A.a
,但保留其余部分?它有可能吗?
答案 0 :(得分:1)
这不是topic
所做的,所以如果你必须使用这种类型的交换,你就不能从绑定中排除一条路线。
您可能会发现rtopic exchange有用:
这个想法是能够在发布消息时指定路由模式。使用默认主题交换模式仅在将队列绑定到交换时才接受。
答案 1 :(得分:0)
AFAIK你不能通过说“不是这个”或类似的东西来制作路由密钥。
要实现您想要的功能,您可以尝试一些解决方法:将一个大的预取计数设置为queue 2
使用者,并确保该消费者是第一个连接到代理的消费者(因为圆形罗宾派遣)。您必须弄清楚要将预取计数设置为什么。
当然,有很多原因导致这种情况不能始终发挥作用(如果消费者下降,或者太慢等等......)