多客户端拉取的zeromq模式从一个服务器推送套接字接收

时间:2016-01-10 18:51:16

标签: zeromq

我想对标记为1 ... n的几个客户端使用zeromq来从服务器中的一个相同套接字中提取接收,将包含一个字段的消息作为客户端ID。当服务器推送消息标记为1时,只有客户端1接收它。

一种方法是为客户端逐个连接生成相同数量的服务器套接字,我认为可能有更好的解决方案。非常感谢。

1 个答案:

答案 0 :(得分:1)

使用"发布/订阅"模式和设置套接字选项,用于过滤消息。

SUB方面的代码:

context = zmq.Context()
socket = context.socket(zmq.SUB);
socket.connect ("tcp://localhost:%s" % port)
topicfilter = "10001"
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)
string = socket.recv()

PUB代码:

context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:%s" % port)
topic = 10001
messagedata = random.randrange(1,215) - 80
socket.send("%d %d" % (topic, messagedata))

示例和模式描述here

<强>更新

您可以使用路由器 - Req 的另一种模式。 常见的想法: enter image description here

python here

的示例