2017-07-12 3 views
1

私はすべてがすべてのコミュニケーションパターンを持つアプリケーションを持っています。私はN個のプロセスのそれぞれに1つのPULLソケットと1つのPUSHソケットを持ち、すべてPUSHソケットをすべてPULLソケットに接続することが理にかなっていると思います。しかし、受信機をラウンドロビン方式で選択するのではなく、ケースバイケースで、特定の受信機に選択的に送信したいと考えています。私はPROCESS- jPULLソケットにPROCESS- iPUSHソケットからメッセージを送信したい場合たとえば、あなたはそれを行う方法を知っていますか?ZeroMQ PUSH/PULLをIDで動作させる方法は?

FOLLOW UP 1:

一つ私は考えることができるソリューションは、各プロセスに1つのROUTERソケット、および各ROUTERソケットを作成することである全対全(他のプロセスのすべてのROUTERソケットに接続します接続)。それは働くだろうか?

FOLLOW UP 2:

私は考えることができる別の解決策ではなくROUTERDEALERソケットを使用することです。たぶん私は各プロセスがDEALERソケットを作成して、他の各プロセスのソケットROUTERに接続するようにすることができます(複数のオール・ワン・コネクション)。それは良い解決策ですか?

答えて

0

実際に完全に(内部的に)メッシュ化されたスタートポロジの友人の場合は、おそらくPUB/SUBのTOPICフィルタがシナリオで十分に機能するかもしれません。

すべてSUB -sは.connect()PUBに-s、.bind()こと、.bind()/.connect() -sも実現可能である逆になります。新しいバージョンではPUB側のTOPICフィルタリングが行われるため、適度なサイズの範囲内でN -sとすれば十分です。 .setsockopt()調整が明白で必要です。

レイテンシ、ケイデンス、またはメッセージサイズのいずれも言及されていないため、完全メッシュのスタートポロジのコンプ+プロを「ソフト」制御のロータリーパスまたは他の低リソース消費アプローチと比較することは困難です。質問のうちのための興味深いアプローチ -

(私はまだZeroMQ 2.1.11を使用し、それを行うのが大好きAM)

月もthis new, custom-made scalable formal communication pattern design exampleのようなMartin SUSTRIKの素敵なエンジン、〜10k +のエージェント以上にスケールアップする必要がある場合。

関連する問題