消息队列- RabbitMQ非轮询调度



我对在RabbitMQ中实现"工作队列"模型很感兴趣。然而,我发现代理执行一个简单的基于循环的任务分派给工人。

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

如果一个特定的worker正在忙着做一个非常繁重的任务,并且有其他空闲的worker,代理应该能够将队列中的消息分派给下一个可用的worker,而不是轮询序列中的下一个worker。是否有一种方法来完成这个使用RabbitMQ?

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

channel.basicQos(1);

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

因此,如果消费者有一个很长的流程要做,它不会接收消息。

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

最新更新