2014-03-26 89 views
4

我有興趣在RabbitMQ中實現「工作隊列」模型。但是,我發現經紀人基於簡單的循環法將任務分派給工人。RabbitMQ非循環賽調度

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

如果一個特定的工人正忙着做一個非常沉重的任務,還有其他的自由工作者,經紀人應該能夠調度在隊列中的消息到下一個可用的工人不是未來工人在循環序列中。有沒有辦法使用RabbitMQ來完成這項工作?

回答

6

也許您正在尋找基於QoS的Fair dispatch(https://www.rabbitmq.com/tutorials/tutorial-two-java.html)。

channel.basicQos(1); 

使用的QoS(1)一個消費者是繁忙,直到不發送ACK,在這種情況下的另一個消息被髮送到下一個空閒消費者。

因此,如果消費者有一個漫長的過程去做,它不會收到消息。

如果沒有空閒消費者,則消息保留到隊列中。

+0

感謝您的回覆。是的,我正在尋找像派遣的東西。 –