【发布时间】:2018-03-11 02:51:33
【问题描述】:
有没有一种方法可以让我设置一个监听多个队列但一次只处理来自单个队列的单个消息的工作人员?
用例: 1. 任务A 2. 任务 B 3.任务C
我想要 10 个工人。 #1 - #3 可以处理Task A,#1 - #6 可以处理Task B,它们都可以处理Task C。
我曾经让我的所有工作人员监听所有队列,但是当一些任务无法被太多工作人员处理时(例如,向另一个服务发出太多并发请求),它们会导致问题。
让工作人员在队列为空而其他队列已满时监听单个队列会浪费其资源。
【问题讨论】:
-
为什么不合并队列?任务 A 一个队列,B 一个队列,C 一个队列,并正确路由消息?
-
but will process only a single message from a single queue at a time这是否意味着 (a) 或 (b),(a) #1 worker 可以处理 TaskA、TaskB 和 TaskC,但一次只能运行一个 Task。 (b) #1 worker 可以处理 TaskA、TaskB 和 TaskC,如果所有 3 个任务同时运行则被接受。 -
@ChetanGhodasara 我的意思是,如果队列 A、队列 B、队列 C 在每个队列中都有一些消息。工作人员一次只会处理来自这些队列之一的消息。因此它可能会处理任务 A、任务 B 或任务 C。但一次只能处理其中一个。
标签: rabbitmq