0

クラスター全体に負荷を分散するパイプラインをセットアップする場合、メッセージが送信される場所をログに記録したいと考えています。これは私が考えていることです(python):

import zmq
context = zmq.Context()
socket = context.socket(zmq.DOWNSTREAM)
socket.connect("tcp://127.0.0.1:5000")
socket.connect("tcp://127.0.0.1:6000")

msg = "Hello World\0"
connection_string = socket.send(msg)
# should print "Sent message to tcp://127.0.0.1:5000"
print "Sent message to", connection_string

しかし、私はこれについて話しているものを見つけることができません。どんな助けでも大歓迎です。

4

3 に答える 3

0

これには、トポロジーのどこかで X(REP|REQ) ソケットを使用する必要があると思われます。監視対象のキュー デバイスをチェックアウトすることをお勧めします: http://github.com/zeromq/pyzmq/blob/master/zmq/devices.pyx

また、一般的な情報については、こちらのパターンの図と説明もご覧ください: http://ipython.scipy.org/doc/nightly/html/development/parallel_connections.html

また、DOWNSTREAM ソケット タイプが PUSH と呼ばれるようになったことにも注意してください (対応する UPSTREAM は PULL に変更されました)。

于 2010-10-01T13:37:41.187 に答える
0

おそらく、返信に受信者のアドレスを含めて、ログに記録することはできますか?

于 2010-10-07T06:07:28.853 に答える
0

私の0.02セント...

ZMQ はフェア キュー方式でルーティングするので、ラウンド ロビンになると思います。したがって、メッセージは受信者に順番に送信されます。ただし、基礎となるルーティング ロジックが将来のバージョンで変更される可能性があるため、その仮定の下でコードを記述することは適切ではありません。

PUSH/PULLの場合はわかりませんが、REQ/REPの場合、REP側は最初のフィールドをアドレスとして封筒に入れて返信できると思います。そうすれば、REQ はソケットで 2 回読み取り、データだけでなくレスポンダ アドレスも取得できます。

于 2010-12-08T04:08:50.083 に答える