A, B, C, D
という名前のjobs
があります。ジョブB
は、ジョブA
が完了した後に開始する必要があります。したがって、仕事の順序は、A->B->C->D
のようになります。rabbitMQに一連のジョブを送信する方法はありますか?
私はA
、B
、C
およびD
の労働者の数を無制限に縮尺したいと思います。 RabbitMQ
を使用してこれを実装する方法はありますか、基本的にはseries
をjobs
に作成する方法を探しています。
私の現在の設計は、次のようになります。
はcaller
プロセスがseriesOfJobs
作成:ジョブA,B,C,D
を記述JSON
の配列がcaller
を経由seriesManager
(別のプロセス)にseriesOfJobs
を送るJSON-RPC
プロトコルを使用してRabbitMQ
RPC
mainCallbackQueue
seriesManager
構文解析seriesOfJobs
がRabbitMQ
RPC
介しworkerA
(別のプロセス)にジョブA
を送信しcallbackQueueA
workerA
行うジョブA
にコールバックを待ちとcallbackQueueA
からのコールバックを取得し、作業者にジョブB
を送信seriesManager
seriesManager
callbackQueueA
を介して通知し、コールバックを待ち、ジョブの場合は同じC
、次に同じジョブの場合はD
seriesManager
は、ジョブがA,B,C,D
終了していることを知っている - それはここRabbitMQ RPC tutorial説明するように、私はRPC
の概念を使用していますmainCallbackQueue
経由caller
を通知し、これを行うための簡単な方法はありますか?
提案したデザインは、現在作業中のプロジェクト(現在取り組んでいるプロジェクト)と似ています。 1)すべてのスマートが1つの場所にあり、「ワーカー」がただ単に「要求」された応答エンドポイントである2)ジョブBが失敗した場合、セントラルハブはジョブを中止することができます。 C/D'を呼び出し、 'caller'に通知します –
私はすべての' smarts'を 'workers'が使うライブラリにエクスポートすることができます...私はどのアプローチが良いかを知るのに十分な経験はありません:) –
また、 'シリーズ'だけでなく 'パラレル'も - しかし、それは複雑さ(コールバックのための追加のキューなど)を導入することは認めています –