回答編集履歴

1

ブローカ例を追加

2017/03/29 11:14

投稿

can110
can110

スコア38262

test CHANGED
@@ -219,3 +219,47 @@
219
219
  以上のように、ちょっと複雑です。
220
220
 
221
221
  そもそも、もっとよい`メッセージングパターン`があるような気がしますので、ガイドブックを一読することを勧めます。
222
+
223
+
224
+
225
+
226
+
227
+ ブローカ例を追加
228
+
229
+ --
230
+
231
+ REQ/REP一方向だけであれば、以下のように簡潔に記述できます。
232
+
233
+ 両方向分、2プロセス立ち上げる必要ありますが、こちらのほうがお勧めです。
234
+
235
+
236
+
237
+ broker2.py : Alice->Bob or Bob->Aliceいずれか一方向のブローカ動作する。起動時に選択する。
238
+
239
+ ```Python
240
+
241
+ import zmq
242
+
243
+ if __name__ == '__main__':
244
+
245
+ ctx = zmq.Context()
246
+
247
+ role = input("Broker role ? [a]=Alice->Bob or [b]=Bob->Alice :")
248
+
249
+ if role == "a": port = [6710,6711]
250
+
251
+ elif role == "b": port = [6720,6721]
252
+
253
+
254
+
255
+ print("broker start")
256
+
257
+ req = ctx.socket(zmq.ROUTER); req.bind("tcp://127.0.0.1:%d"%(port[0]))
258
+
259
+ res = ctx.socket(zmq.DEALER); res.bind("tcp://127.0.0.1:%d"%(port[1]))
260
+
261
+ zmq.proxy( req,res)
262
+
263
+ print("broker end")
264
+
265
+ ```