我正在尝试实现一种“独占消费者”或“独占队列”,避免最终用户必须固定任何内容:代理将选择一个消息使用者来获取队列的所有消息以确保< strong>订购,如果该消费者失败,代理将自动进行故障转移并选择其他消费者。
我想知道Celery和RabbitMQ的组合是否可以实现。
答案 0 :(得分:1)
尽管意识到这个问题已有7年以上的历史,但还是有人会像我刚才那样偶然发现此页面。因此,在2019年,RabbitMQ团队发布了3.8版,该版本支持名为“单一活跃消费者”的新功能。它恰好提供了这种类型的消费者专有性以及自动回退行为,在第一个消费者出于任何原因掉线或断开连接时,下一个(随机选择的)监听队列的消费者将成为“单个活动消费者”。而且此功能不需要对消息队列本身进行任何复杂的设置。它适用于几乎所有队列。
请访问https://www.cloudamqp.com/blog/2019-04-23-rabbitmq-3-8-feature-focus-single-active-consumer.html和https://www.rabbitmq.com/consumers.html#single-active-consumer
了解更多答案 1 :(得分:0)
尽管RabbitMQ具有“排他”队列的概念,但我认为您无法获得所需的后备行为。
经纪人不会“选择”单个消费者。可以通过不使用自动ACK,拒绝错误并让工作人员死亡/重新启动来解决故障模式。
如果只有一个使用者,这将保留消息顺序。使用负载平衡,您的行驶里程可能会有所不同。