有没有办法向rabbitMQ发送一系列工作?

时间:2016-06-15 08:47:24

标签: rabbitmq message-queue distributed-computing json-rpc

jobs名为A, B, C, D。作业B必须在作业A完成后开始。因此,工作顺序应如下A->B->C->D

我想独立地扩展ABCD的工作人员数量。有没有办法使用RabbitMQ来实现这一点,我基本上是在寻找一种方法来创建series jobs

我目前的设计如下:

  1. caller进程创建seriesOfJobs:使用JSON协议描述作业A,B,C,D的{​​{1}}数组
  2. JSON-RPC通过caller seriesOfJobsseriesManager发送到RabbitMQ(单独的流程)并等待RPC
  3. mainCallbackQueue解析seriesManager通过seriesOfJobs A将作业workerA发送到RabbitMQ(单独的流程)并等待RPC的回调1}}
  4. callbackQueueA执行作业workerA并通过A
  5. 通知seriesManager
  6. callbackQueueAseriesManager获取回调并将作业callbackQueueA发送给工作人员并等待回调,然后对作业B进行回复,然后为作业{ {1}}

  7. C知道作业D已完成 - 它通过seriesManager

  8. 通知A,B,C,D

    我正在使用此处所述的caller概念RabbitMQ RPC tutorial有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

(不幸的是我没有足够的声誉来评论,所以这可能是一个有点缺乏答案,因为我无法澄清要求,尽管我会尝试编辑它以坚持所需的)

是否绝对需要seriesManager出席?

workerAB创建作业workerB等等可能更合乎逻辑,而不是一直回调到中央集线器。

在这种情况下,您当前的设计将更改为:

  1. caller创建seriesOfJobs
  2. callerseriesOfJobs发送给workerA
  3. workerA执行作业A并将剩余的seriesOfJobs发送至workerB
  4. workerB执行作业B并将剩余的seriesOfJobs发送至workerC
  5. workerC执行作业C并将剩余的seriesOfJobs发送至workerD
  6. workerD执行作业D并通过caller通知mainCallbackQueue
  7. 我认为这是一种“更简单的方式”,因为这个令人讨厌的中央枢纽不在其中。