2011-11-21 10 views
5

エージェントと呼ばれる外部プログラムがZeroMqプロデューサを介して通信できるメッセージングシステムを実装しています。したがって、関心のあるイベントが発生するたびに、エージェントはメッセージをZeroMqに送信します。ZeroMQパイプラインパターン

パイプラインパターンを使用してこれを実装することに興味があります。

いくつかの例(Ventilator-Worker-Results Manager)が見つかりましたが、人工呼吸器コンポーネントはワーカーからの接続を受け入れるエンドポイントを作成し、すべてのメッセージを一括して送信します。

私のシナリオは全く異なります。 「エージェント」は、イベントが送信される必要があるたびに接続します。つまり、ワーカーからの接続を待つことはないので、これが可能かどうか疑問です。また、重要な事実は、メッセージが送信される順序で処理されなければならないということです。

答えて

2

あなたのソリューションを実現するために、パターンを混合してください。 REQ エージェントコレクターを実際のREQエージェントにインスタンス化するのはspecialized brokerであるべきだと思います。これらのエージェントコレクタは、システムと通信する前に発注する必要があります。

+0

私はここで双方向のコミュニケーションが必要でないことを除いて、これは良い解決策になるかもしれません。エージェントは、メッセージがブローカに配信されたかどうかを知る必要はなく、送信するだけで済みます。 – Nedo

+0

私には分かりませんが、[AFAIK](http://en.wiktionary.org/wiki/AFAIK)では、ZeroMQには単一のソケットの概念はありません。 REQエージェントがブローカとの接続を維持する必要がある場合は、イベントが送信されるたびにソケットを閉じるだけです。 –

1

REQ-REPは、往復を希望する場合です。あなたはPUB-SUBがほしいと思うように聞こえる。よく知られているポートにバインドしてSUBを設定し、クライアントがそのポートに接続してPUBを発行させる。