我希望以循环方式在多个服务器之间分配任务,每个服务器一次最多只能处理多个CPU核心任务。
在Java中,可以像这样控制要预取的任务数:
int prefetchCount = 4; // would be number of cores in actual app
channel.basicQos(prefetchCount);
但现在假设我有两个服务器A和B,每个服务器都有相同的设置来预取4个任务。假设我在队列中放了5个任务。这是否意味着服务器A将消耗队列中的4个任务,而服务器B将消耗1个任务?或者,任务仍然是分布式轮询的?
发布于 2016-11-28 06:20:58
这些任务将根据工作人员的可用性进行循环传送。
一台服务器可能会说“我可以接收4条消息”,但它会收到4条消息,而另一台服务器只剩下1条消息可用。
然而,不能保证它会以这种方式发生,也不能保证消息将以循环方式传递,一次一条消息到每台服务器。
交付标准包括消息到达、消息和消费者优先级、消费者可用性和其他因素。
这个页面有一些关于主题https://www.rabbitmq.com/consumer-priority.html的好信息
https://stackoverflow.com/questions/40834182
复制相似问题