web-dev-qa-db-ja.com

RabbitMQのタスクキューとメッセージキューの違いは何ですか?

メッセージキューとしてRabbitMQを使用し、タスクキューにCeleryを使用しています。キューに頭を抱えています。

タスクキューとメッセージキューの動作の違いを誰かに説明してもらえますか?

これまでのところ、メッセージキューはテキストメッセージやログスニペットなどの実際のデータに使用されます。メッセージキューに配置されるため、ワーカーはそれを収集して、解析や保存など、何かを行うことができます。

タスクキューの部分は私を混乱させますが、それがなぜ、いつ、何をするのかわかりませんか?

ワーカー(タスクとも呼ばれます)は、処理するために常にメッセージキューをポーリングしていると思いますが、なぜタスクキューがあるのですか?

6
Werner

かなりではありませんが、近いです。 RabbitMQのタスクキューは、cronやWindowsタスクスケジューラなどのタスクスケジューラに似ています

ワークキュー(別名:タスクキュー)の主な目的は、リソースを大量に消費するタスクをすぐに実行せず、完了するまで待機する必要がないことです。代わりに、後で実行するタスクをスケジュールします。タスクをメッセージとしてカプセル化し、キューに送信します。バックグラウンドで実行されているワーカープロセスがタスクをポップし、最終的にジョブを実行します。多くのワーカーを実行すると、タスクはそれらの間で共有されます。

RabbitMQはメッセージブローカーであるため、用語が使用されます。したがって、運用上、機能上、それほど大きな違いはありません。 1つはメッセージ用で、もう1つはタスク/ジョブ用です。実際の唯一の違いは、メッセージは通常、できるだけ迅速に処理される(したがってキューから消去される)ことを目的としていますが、タスクは通常、特定の時間にスケジュールされているため、しばらくの間「キューに入れられたまま」になります。ただし、システム管理のコンテキストでは、あまり心配しなくてはならない違いではないでしょう。

3
HopelessN00b