RabbitMQ 竞争消费者一次按顺序处理 1 条消息

尼克L

这个问题类似,我们有 FIFO 队列,必须按顺序处理消息。出于冗余和性能原因,我们希望来自不同机器的竞争消费者,但一次只有一台机器上的一个消费者应该处理给定队列的消息。

我尝试将预取计数设置为 1,但我相信这仅适用于单台机器。默认情况下,RabbitMQ 是否可以做到这一点,还是我们需要实现自己的锁?

加布里埃尔·桑托马乔

给定具有多个消费者的单个队列,无法阻止其中一个消费者,所有消费者都以循环方式接收消息。

编辑https://www.rabbitmq.com/consumers.html#single-active-consumer /EDIT

你可以看到这个插件https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange使用不同的队列来分配负载。

我尝试将预取计数设置为 1

prefetch=1 意味着消费者一次接受一条消息。

我们需要实现我们自己的锁吗

是的,如果你想要一个单一的消费者排队避免其他消费者。

编辑

还有Exclusive Queues https://www.rabbitmq.com/queues.html#exclusive-queues请注意

独占队列在声明连接关闭或消失时被删除(例如,由于底层 TCP 连接丢失)。因此,它们仅适用于客户端特定的瞬态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RabbitMQ多次确认同一条消息关闭了使用者

RabbitMQ / AMQP:单个队列,同一条消息的多个使用者?

RabbitMQ-多个使用者如何从单个队列使用同一条消息?

rabbitmq amqp-监听来自消费者的确认消息

RabbitMQ仅侦听队列中的第一条消息

RabbitMQ向每个消费者发送相同的消息

rabbitmq:消费者能否在nack之前保持消息更改?

RabbitMQ / AMQP设计:如何让一个消费者处理一些消息,但观察所有消费者呢?

在RabbitMQ中确认消费者的剩余消息

RabbitMQ-将相同的消息通过单独的连接传递给消费者

优先处理RabbitMQ消费者消息的使用

我如何让RabbitMQ使用者仅接收一条消息而不会超时并发送agan?

消费未确认的RabbitMq消息

RabbitMQ-消息传递顺序

RabbitMQ如何向消费者发送消息?

处理10条消息后如何停止Rabbitmq Consumer?

RabbitMQ消费者未收到生产者发送的消息

AMQP / RabbitMQ-按顺序处理消息

RabbitMQ-主题交流与竞争消费者

停止RabbitMQ消费者进程当前消息

当消费者从rabbitmq中的通道获取消息时,预取消息驻留在何处

RabbitMQ 队列的第一条消息导致通道关闭

即使消息存在于消费者端的rabbitmq 队列中,也会获得 NULL

RabbitMQ - 在没有任何消费者的队列上删除了未确认的消息

RabbitMQ一次出列多条消息

当 RabbitMQ 中有其他消费者可用时,消息堆积在消费者身上 - 使用 bunny for rails

将消息从 RabbitMQ 分发给在 Heroku dynos 上运行的消费者作为“循环”

同步队列的所有消费者一次只处理一条消息

只有一个消费者从 RabbitMQ 上的队列接收消息