2012-05-20 6 views
14

まず、私はZeroMQとメッセージキューシステムが初めてだから、私がやろうとしていることは別のアプローチで解決できるかもしれません。ZeroMQでキューを監視/管理する方法は?

  • 複数のクライアントがブローカに接続して処理する必要があるアイテムのIDを送信:私は、次のないメッセージングシステムを設計しています。クライアントはすぐに切断し、応答を待つことはありません。

  • ブローカは、ワーカーにアイテムを送信し、ワーカーごとに処理を実行します。それぞれの戻り値は、処理が完了したという信号を返します。

    私がリクエストを処理している基本的なシステムのセットアップが/正しく返信が、私はまた、次の操作を実行できるようにしたいと思い持って

  • クエリどのように多くのプロセスを参照するには、ブローカー実際には労働者の上を走っていて、どれだけ多くの人が走るのを待っているのか。

  • IDごとに1つのプロセスしか実行していないことをブローカに確認してください。重複したIDが到着し、そのアイテムが現在ワーカーによって処理されていない場合は、キューに追加しないでください。

私はブローカー/ディーラーソケットでポーリング設定を使用しています。私が使用しているコードはthis example from Ian Barberと非常に似ています。

私の最初の傾向(zmqでの実装方法はわかりませんが)は、ブローカーに受信したIDと作業者が積極的に処理しているIDを記録しておくことです。ブローカーは実際に処理を実行できるかどうかにかかわらず、すぐにワーカーにリクエストを転送するようです。その後、ワーカーはIDをキューに入れ、順番に処理します。これは理想的ではありません。なぜなら、信頼性を達成するために、システム内で何が起こっているかを監視して制御できるようになるからです。

とにかく、このタイプの設定のヒント、ヒント、または例は大歓迎です。

+0

ばかり考え、zmqは、多分あなたはActiveMQの、RabbitMQのかopenmqのような製品を見ている必要があり、軽量/かなりベアボーンです彼らは広範な管理の可能性を持っています。 activemqやopenmqのような製品は、かなりJava中心的ですが、多くのプログラミング言語に対して非常に機能的なバインディングを持っています。 – fvu

+0

@fvu - ありがとう - 私はzmqを使うことを望んでいましたが、他のライブラリのいくつかをチェックアウトします。特にRabbitMQがうまくいくと思います。 – jonstjohn

答えて

14

私の意見では、ZeroMQはブローカレスデザインで最もよく使用されています。このデザインではライブラリが設計されています。キュー内のアイテム数やスループットなどを監視したい場合は、アプリケーション/デバイス/プロデューサに直接ビルドする必要があります。メッセージングを初心者にしているので、すぐに手に入らない可能性があります。これを考えると、RabbitMQ(または類似のブローカー)を調べることをお勧めします。これは、これらのサービスをあなたのために提供します。あなたがRabbitMQ(あるいはむしろAMQP)を採用しているならば、上記のシナリオでファンアウト交換を使うことをお勧めします。 ZeroMQのため

+0

+1 zeromqについて+1しますが、ウサギをキューサーバーとゼロテックのメッセージブローカーとして使用して、rabbitmqでゼロを使用します。 – BlaShadow

13

ザ・Pythonライブラリは、これに対処するためのパターンが付属しているようだ:http://zeromq.github.com/pyzmq/devices.html#monitoredqueue

+0

ありがとう!このドキュメントは間違いなく有用です。私は、RabbitMQを使用してこの設定を実装しました。少し柔軟性のあるまともなソリューションではありませんでした。 – jonstjohn

関連する問題