RabbitMQ竞争消费者按顺序一次处理1条消息
与之类似,我们有FIFO队列,必须按顺序处理消息。出于冗余和性能原因,我们需要来自不同机器的竞争消费者,但一台机器上每次只能有一个消费者处理给定队列的消息RabbitMQ竞争消费者按顺序一次处理1条消息,rabbitmq,messaging,fifo,Rabbitmq,Messaging,Fifo,与之类似,我们有FIFO队列,必须按顺序处理消息。出于冗余和性能原因,我们需要来自不同机器的竞争消费者,但一台机器上每次只能有一个消费者处理给定队列的消息 我尝试将预回迁计数设置为1,但我相信这只有在与一台机器一起使用时才能起作用。RabbitMQ默认情况下是否可能实现这一点,或者我们是否需要实现自己的锁 如果一个队列有多个使用者,则无法阻止其中一个使用者,所有使用者都以循环方式接收消息 编辑 看见 /EDIT 您可以看到这个插件,它使用不同的队列来分配负载 我尝试将预回迁计数设置为1 pref
我尝试将预回迁计数设置为1,但我相信这只有在与一台机器一起使用时才能起作用。RabbitMQ默认情况下是否可能实现这一点,或者我们是否需要实现自己的锁 如果一个队列有多个使用者,则无法阻止其中一个使用者,所有使用者都以循环方式接收消息 编辑 看见 /EDIT 您可以看到这个插件,它使用不同的队列来分配负载 我尝试将预回迁计数设置为1
prefetch=1
表示消费者一次只接收一条消息
我们需要实现自己的锁吗
是的,如果您想要一个消费者来避免其他消费者排队
编辑
还有专用队列
,但注意:
独占队列在其声明连接关闭或消失时(例如,由于底层TCP连接丢失)被删除。因此,它们仅适用于特定于客户端的瞬态
谢谢你的回答。我查看了排他性队列,但没有看到关于删除它们的警告。我不确定一致性散列插件是否有用——我认为它不能确保串行执行,这是我主要关心的问题。关于他们目前开发该功能的提示看起来很有趣