如何消费除 routing_key 中指定的所有 RabbitMQ 消息?

How to consume all RabbitMQ messages other than specified in routing_key?

RabbitMQ 允许根据 routing_key 匹配在多个队列上分发消息。对于 type='topic' 的交换,可以指定允许更灵活过滤的通配符(比 type='direct' 交换的情况),它们是:

* (star) can substitute for exactly one word.
# (hash) can substitute for zero or more words.

例如,对于具有 routing_key='A.B.*' 的队列,交换正在推送具有 routing_key 模式 'A.B.A'、'A.B.1'、'A.B.XXX',等等

在我的用例中,我需要两个队列绑定到同一个交换器,一个队列接收所有带有 routing_key='A.B.A' 的消息,另一个队列接收与 [=] 不匹配的所有其他消息23=]。为第一个队列做这件事没什么大不了的,但我在教程中找不到任何可以帮助我处理第二个队列的东西...

拜托,如果在 python + pika 库中有一个例子就好了。

你能澄清一下你对 bound to the same exchange 的要求吗?

如果 "just" 通过同一个交换器推送消息,您可以查看 alternate exchange

基本上,它是您的 "main" 交换器上的配置,它声明任何与 任何 绑定到它的队列的绑定不匹配的消息都将被传输到备用交换(可以是不同类型)进行处理。

一个简单的设置是进行扇出类型的备用交换,将所有这些 未绑定 消息路由到给定队列。