Zmq 非常快,但对于任何复杂的架构来说,每侧的每个 2 路连接(以及每种连接类型 - 例如 REQ-REQ 和 PUB-SUB 等)都有一对套接字。于是出现了经纪人的概念。
具有通道的代理套接字(例如命名连接抽象),将提供模式类型封装。一种在每台机器上的一个端口上打开一个套接字并让它完成所有操作(PUB-SUB,REQ-REP 等)的方法将是花哨的。
有没有办法用 zmq 或它的一些扩展为所有人创建这样一个?
Zmq 非常快,但对于任何复杂的架构来说,每侧的每个 2 路连接(以及每种连接类型 - 例如 REQ-REQ 和 PUB-SUB 等)都有一对套接字。于是出现了经纪人的概念。
具有通道的代理套接字(例如命名连接抽象),将提供模式类型封装。一种在每台机器上的一个端口上打开一个套接字并让它完成所有操作(PUB-SUB,REQ-REP 等)的方法将是花哨的。
有没有办法用 zmq 或它的一些扩展为所有人创建这样一个?
您不能使用相同的 ZMQ 套接字执行 PUB/SUB 和 REQ/REP,它根本行不通。但是,您可以将逻辑封装在单个组件中,至少可以使用 接收来自不同套接字类型的消息ZMQ.Poller
,这是 Python 示例,希望对您有所帮助...
https://github.com/imatix/zguide/blob/master/examples/Python/mspoller.py
顺便说一句,如果你在做 N 对 N PUB/SUB,你应该使用 ZMQ 代理/转发器作为中介;否则,您会遇到动态发现问题,请在此处阅读:http: //zguide.zeromq.org/page :all#The-Dynamic-Discovery-Problem