我jobs
名为A, B, C, D
。作业B
必须在作业A
完成后开始。因此,工作顺序应如下A->B->C->D
。
我想独立地扩展A
,B
,C
和D
的工作人员数量。有没有办法使用RabbitMQ
来实现这一点,我基本上是在寻找一种方法来创建series
jobs
。
我目前的设计如下:
caller
进程创建seriesOfJobs
:使用JSON
协议描述作业A,B,C,D
的{{1}}数组JSON-RPC
通过caller
seriesOfJobs
将seriesManager
发送到RabbitMQ
(单独的流程)并等待RPC
mainCallbackQueue
解析seriesManager
通过seriesOfJobs
A
将作业workerA
发送到RabbitMQ
(单独的流程)并等待RPC
的回调1}} callbackQueueA
执行作业workerA
并通过A
seriesManager
callbackQueueA
从seriesManager
获取回调并将作业callbackQueueA
发送给工作人员并等待回调,然后对作业B
进行回复,然后为作业{ {1}}
C
知道作业D
已完成 - 它通过seriesManager
A,B,C,D
醇>
我正在使用此处所述的caller
概念RabbitMQ RPC tutorial有更简单的方法吗?
答案 0 :(得分:1)
(不幸的是我没有足够的声誉来评论,所以这可能是一个有点缺乏答案,因为我无法澄清要求,尽管我会尝试编辑它以坚持所需的)
是否绝对需要seriesManager
出席?
让workerA
为B
创建作业workerB
等等可能更合乎逻辑,而不是一直回调到中央集线器。
在这种情况下,您当前的设计将更改为:
caller
创建seriesOfJobs
。caller
将seriesOfJobs
发送给workerA
。workerA
执行作业A
并将剩余的seriesOfJobs
发送至workerB
。workerB
执行作业B
并将剩余的seriesOfJobs
发送至workerC
。workerC
执行作业C
并将剩余的seriesOfJobs
发送至workerD
。workerD
执行作业D
并通过caller
通知mainCallbackQueue
。我认为这是一种“更简单的方式”,因为这个令人讨厌的中央枢纽不在其中。