使用RabbitMQ逐个处理队列

时间:2015-04-04 11:19:01

标签: queue rabbitmq

我的工作人员数量有限,并且通过掩码命名的队列数量不受限制。*。*" (例如q.1q.2)。我需要处理它们 反过来。每个工人一项任务。当worker完成任务时,它会从下一个现有队列中接收新任务。

E.g。我有队列:

q.1: task11, task12, task13
q.2: task21, task22, task23

三名工人。我期待下一个执行顺序:

worker1: task11
worker2: task21
worker3: task12
worker1: task22
worker2: task13
worker3: task23

我尝试使用topic并订阅了掩码q.*,但这导致每个工作人员从所有队列接收任务。什么是正确的决定?

1 个答案:

答案 0 :(得分:0)

将每个队列视为自己的工作。 q.1与q.2完全无关,实际上甚至不知道它存在。它可以从q.2以不同的速率处理事物,并且应该有不同的消费者。 q.1上的工人应该只关注q.1,它不应该在q.1和q.2之间来回反弹。

你想把两个队列连在一起吗?如果是这样,你可能会有这样的事情:

  1. 消息被放入q.1
  2. 消息由q.1
  3. 的工作者(称为worker1)处理
  4. 在worker1确认消息后,它会在q.2
  5. 中插入新消息
  6. 消息由q.2
  7. 的工作者(称为worker2)处理