1

大量のデータを処理するために RabbitMQ を使用しています。と の 3 種類のコンシューマがdownloader, extracterありimporterます。それらは、上で述べた順序で順次動作する必要があります。たとえば、一連downloaderのファイルをダウンロードし、extracterそれらを抽出した後importer、ファイルから情報を DB にインポートする必要があります。私の質問は、この種の機能をどのように実装できますか? これは、 ( )extracterから のキューにメッセージを入れる良い方法ですか? または、これに対する別の解決策はありますか?downloaderconsumer

4

1 に答える 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 に答える