【问题标题】:How to consume all RabbitMQ messages other than specified in routing_key?如何消费除 routing_key 中指定的所有 RabbitMQ 消息?
【发布时间】:2018-01-24 12:09:02
【问题描述】:

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.*' 的队列,交换将推送所有带有模式 'A.B.A'、'A.B.1'、'A.B.XXX' 等的 routing_key 的消息。

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

请在 python + pika 库中提供一个示例。

【问题讨论】:

    标签: rabbitmq pika


    【解决方案1】:

    能否说明您对bound to the same exchange 的要求?

    如果只是“只是”让消息通过同一个交换器推送,您可以查看alternate exchange

    基本上,这是您的“主”交换器上的配置,它声明任何与绑定到它的队列的绑定不匹配的任何消息都将被转移到一个备用交换器(可以是不同的类型)进行处理。

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

    【讨论】:

    • 谢谢,备用交换解决了这个问题,但需要额外交换。为什么他们没有在这里为这种有用的功能提供额外的教程rabbitmq.com/getstarted.html ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2015-09-27
    • 2020-04-20
    相关资源
    最近更新 更多