如何让工作人员竞相从RabbitMQ队列检索消息

如何让工作人员竞相从RabbitMQ队列检索消息,rabbitmq,Rabbitmq,我有一个潜在的缓慢操作和N个工人可以同时执行此操作。使用RabbitMQ,我想发布一条消息,这N个工作人员中的任何一个都可以处理,但实际上只有一个非繁忙的工作人员会处理 打个比方:有一篮苹果和N个饥饿的人。一旦一个苹果被添加到盒子里,只有一个目前没有吃的人可以拿走这个苹果。当所有人都在吃苹果时,苹果会一直坐在那里,直到有人准备好再吃一个为止。一旦苹果被拿走,其他人就不能拥有它,因为拿走它的人不会分享。这就是我希望对某些类型的RabbitMQ配置执行的操作。您可以使用直接交换,将(使用者)预取计数

我有一个潜在的缓慢操作和N个工人可以同时执行此操作。使用RabbitMQ,我想发布一条消息,这N个工作人员中的任何一个都可以处理,但实际上只有一个非繁忙的工作人员会处理


打个比方:有一篮苹果和N个饥饿的人。一旦一个苹果被添加到盒子里,只有一个目前没有吃的人可以拿走这个苹果。当所有人都在吃苹果时,苹果会一直坐在那里,直到有人准备好再吃一个为止。一旦苹果被拿走,其他人就不能拥有它,因为拿走它的人不会分享。这就是我希望对某些类型的RabbitMQ配置执行的操作。

您可以使用直接交换,将(使用者)预取计数设置为1,并手动对消息进行AKCNOWLEGE。这意味着消费者每次只收到一条消息,当它处理完后,它会确认消息,就是这样

所以预取一个人拿一个苹果
rabbit mq以圆形robbin方式发送消息:“下一个”不吃东西的人将被交给下一个苹果
手动确认-该人已吃完并等待下一个苹果交给他/她

例如,如果预取计数为2,这意味着一个人说我将有两个苹果(所以有点保留它们),在吃第一个苹果时,其他人不允许吃第二个


在中也有类似的使用案例,除了在那里启用了自动确认。

您可以使用直接交换,将(消费者)预回迁计数设置为1,并手动对消息进行akcnowledge。这意味着消费者每次只收到一条消息,当它处理完后,它会确认消息,就是这样

所以预取一个人拿一个苹果
rabbit mq以圆形robbin方式发送消息:“下一个”不吃东西的人将被交给下一个苹果
手动确认-该人已吃完并等待下一个苹果交给他/她

例如,如果预取计数为2,这意味着一个人说我将有两个苹果(所以有点保留它们),在吃第一个苹果时,其他人不允许吃第二个

类似的用例在中,除了在那里启用了自动确认