大量のデータを処理するために RabbitMQ を使用しています。と の 3 種類のコンシューマがdownloader, extracter
ありimporter
ます。それらは、上で述べた順序で順次動作する必要があります。たとえば、一連downloader
のファイルをダウンロードし、extracter
それらを抽出した後importer
、ファイルから情報を DB にインポートする必要があります。私の質問は、この種の機能をどのように実装できますか? これは、 ( )extracter
から のキューにメッセージを入れる良い方法ですか? または、これに対する別の解決策はありますか?downloader
consumer
質問する
564 次
1 に答える
1
これは、3 つの個別のキューを使用するのに最適なケースのようです。download
キュー、extraction
キュー、キューがありますimport
。
各キューのコンシューマは、作業が完了した後、パイプライン内の次のキューにメッセージを配置する責任があります。
したがって、ワークフローは次のようになります (queue.
明確にするためにキューの前に が付けられています)。
??? -> queue.download
queue.download -> downloader -> download complete -> queue.extraction
queue.extraction -> extracter -> extraction complete -> queue.import
queue.import -> importer -> import complete -> ???
注意すべき点がいくつかあります。
download
物事を開始するには、メッセージをキューに入れる何かが必要です。- パイプラインに他のステップを簡単に追加でき
compression
ます。たとえば、ステップを追加したいですか? ダウンローダーにメッセージをcompression
キューに入れさせ、そのステップが完了したら、メッセージをextraction
キューに入れます。 - パイプラインのどの段階でも簡単に水平方向にスケーリングできます。ダウンロードに時間がかかりすぎますか?
downloader
同じ作業キューからメッセージをプルするインスタンスをさらにスピンアップします。
お役に立てれば!
于 2013-03-29T12:34:21.680 に答える