2016-11-27 48 views
0

我想以循環方式在多個服務器之間分配任務,並且每個服務器應該一次處理大多數CPU核心任務。BasicQos和Round Robin

在Java任務預取的數量,可以控制這樣的:

int prefetchCount = 4; // would be number of cores in actual app 
channel.basicQos(prefetchCount); 

但現在假設我有兩個服務器A和B,每一個都具有相同的設置來預取4個任務。並且讓我說我把5個任務放在隊列中。這是否意味着服務器A將從隊列中消耗4個任務,並且服務器B 1?還是這些任務仍然是循環分配?

回答

0

該任務將根據工作人員的可用性進行循環交付。

有可能一個服務器可以說「我可以接收4條消息」,它會接收4條消息,只剩下1條可用於其他服務器。然而,不能保證它會以這種方式發生,並且不能保證消息將被循環交付,每次向每個服務器發送一條消息。

交付標準包括消息到達,消息和消費者優先級,消費者可用性和其他因素。

此頁面有一些關於此主題的較好信息https://www.rabbitmq.com/consumer-priority.html