2016-11-27 40 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