2017-02-15 22 views
2

symfonyからnodeJsにメッセージを送信するためにRabbitMQを使用します。並列処理が必要です。RabbitMQ - 並列タスクを消費する

私は、クライアントごとに処理するデータの量に応じて、完了までに5分から70分かかることがあるクライアントごとのジョブを持っています。クライアントはランダムにジョブ要求を送信できます。 65分 CLIENT2ジョブ - - 10分 クライアント3ジョブ - 5分 client4ジョブ - 10

のは、5つのクライアントが

CLIENT1ジョブの下に与えられているように、それぞれのジョブを完了するために必要な時間で自分の仕事を投稿すると仮定しようmins client5 job - 20 mins 通常のキューには、client1のジョブが完了するまでに65分かかるため、10分かかるジョブを完了するために75分(65 + 10)を待たなければならないという問題があります。

RabbitMQでは、このジョブを処理する多くのワーカーを作成できますが、ジョブにかかる時間とキュー内のジョブの位置によっては、クライアントが取得するのに多くの時間がかかることがあります彼らの仕事は完了した。

私はクライアントごとにダイナミックコンシューマを作成する予定です。そして、各消費者は、すべてのクライアントごとに個別に仕事をします。

これはRabbitmqで可能ですか?はいの場合、どのように達成できますか?

enter image description here

+0

私はノードの専門家ではありませんが、非同期処理が許可されていると思いますか? RabbitMQメッセージをリッスンして非同期に処理するプロセスはありませんでしたか? – mickadoo

答えて

0

あなたはウサギのMQのチュートリアルでFair dispatchに関する部分を確認する必要があります。

$channel->basic_qos(null, 1, null);を使用して同時に1つのジョブを処理する方法を示します。だからあなたは公平なメッセージの分布を持っています。

関連する問題