RabbitMQ Non-Round Robin Dispatching

alp*_*cod 5 rpc distributed-computing message-queue amqp rabbitmq

我有兴趣在RabbitMQ中实现"工作队列"模型.但是,我发现代理执行简单的循环操作,将任务分配给工作人员.

https://www.rabbitmq.com/tutorials/tutorial-two-java.html

如果某个特定的工作人员忙于执行非常繁重的任务并且还有其他自由工作者,则代理应该能够将队列中的消息分发给下一个可用的工作人员,不是循环序列中的下一个工作人员.有没有办法使用RabbitMQ实现这一目标?

Gab*_*ele 7

也许您正在寻找基于QoS的公平派遣(https://www.rabbitmq.com/tutorials/tutorial-two-java.html).

channel.basicQos(1);
Run Code Online (Sandbox Code Playgroud)

使用QoS(1)一个消费者忙,直到不发送ACK,在这种情况下,另一个消息被发送给下一个免费消费者.

因此,如果消费者有一个漫长的过程,它就不会收到消息.

如果没有空闲的消费者,则消息将保留在队列中.