1. 程式人生 > >RabbitMQ學習(公平派遣)

RabbitMQ學習(公平派遣)

處理 blog 改變 png 數量 gpo 沒有 如果 就會

您可能已經註意到調度仍然不能像我們想要的那樣正常工作。例如在有兩個工人的情況下,當所有奇怪的信息都很重,甚至信息很輕時,一個工作人員就會一直很忙,而另一個工人幾乎不會做任何工作。那麽,RabbitMQ不知道任何關於這個,並將仍然均勻地發送消息。

發生這種情況是因為RabbitMQ只在消息進入隊列時調度消息。它沒有考慮消費者未確認消息的數量。它只是盲目地把第n條消息分發給第n個消費者。

技術分享圖片

為了改變這種行為,我們可以使用basicQos方法和 prefetchCount = 1設置。這告訴RabbitMQ一次不能給一個工作者多個消息。或者換句話說,不要向工作人員發送新消息,直到處理並確認了前一個消息。

相反,它會將其分派給下一個還不忙的工作人員。

我們可以使用 channel.BasicQos(0, 1, false); 來規定,它是在消費者那裏

關於隊列大小的說明

如果所有的工人都很忙,你的隊伍就可以填滿了。你會想要關註一下,也許會增加更多的工人,或者有其他的策略。

RabbitMQ學習(公平派遣)