回答編集履歴
1
ブローカ例を追加
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
|
+
```
|