Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RabbitMQ竞争消费者按顺序一次处理1条消息_Rabbitmq_Messaging_Fifo - Fatal编程技术网

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

RabbitMQ竞争消费者按顺序一次处理1条消息,rabbitmq,messaging,fifo,Rabbitmq,Messaging,Fifo,与之类似,我们有FIFO队列,必须按顺序处理消息。出于冗余和性能原因,我们需要来自不同机器的竞争消费者,但一台机器上每次只能有一个消费者处理给定队列的消息 我尝试将预回迁计数设置为1,但我相信这只有在与一台机器一起使用时才能起作用。RabbitMQ默认情况下是否可能实现这一点,或者我们是否需要实现自己的锁 如果一个队列有多个使用者,则无法阻止其中一个使用者,所有使用者都以循环方式接收消息 编辑 看见 /EDIT 您可以看到这个插件,它使用不同的队列来分配负载 我尝试将预回迁计数设置为1 pref

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


我尝试将预回迁计数设置为1,但我相信这只有在与一台机器一起使用时才能起作用。RabbitMQ默认情况下是否可能实现这一点,或者我们是否需要实现自己的锁

如果一个队列有多个使用者,则无法阻止其中一个使用者,所有使用者都以循环方式接收消息

编辑 看见 /EDIT

您可以看到这个插件,它使用不同的队列来分配负载

我尝试将预回迁计数设置为1

prefetch=1
表示消费者一次只接收一条消息

我们需要实现自己的锁吗

是的,如果您想要一个消费者来避免其他消费者排队

编辑

还有
专用队列
,但注意

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


谢谢你的回答。我查看了排他性队列,但没有看到关于删除它们的警告。我不确定一致性散列插件是否有用——我认为它不能确保串行执行,这是我主要关心的问题。关于他们目前开发该功能的提示看起来很有趣