几天前我开始使用 zeromq。我的目标是设计一个包含多个经纪人(经纪人网络)的发布订阅系统。我已经阅读了 zeromq 指南的相关部分,并为简单的 pub 子系统编写了代码。如果有人可以帮助我解决以下问题:
据我所知,代理(xpub-xsub 套接字)也将有推/拉套接字来传递发布-订阅消息。那是对的吗?在经纪人应该如何沟通方面的任何帮助将不胜感激。经纪人之间应该有中介吗?
任何设计指南都会非常有帮助。谢谢你。
几天前我开始使用 zeromq。我的目标是设计一个包含多个经纪人(经纪人网络)的发布订阅系统。我已经阅读了 zeromq 指南的相关部分,并为简单的 pub 子系统编写了代码。如果有人可以帮助我解决以下问题:
据我所知,代理(xpub-xsub 套接字)也将有推/拉套接字来传递发布-订阅消息。那是对的吗?在经纪人应该如何沟通方面的任何帮助将不胜感激。经纪人之间应该有中介吗?
任何设计指南都会非常有帮助。谢谢你。
该指南说,当需要动态发现时,我们应该使用 xpub 和 xsub 套接字。有人可以解释一下套接字之间的区别:xpub 和 pub,以及 xsub 和 sub。
XPUB
just 表示许多发布者,而PUB
, 表示单个发布者。
XSUB
表示许多订阅者,相比之下SUB
,表示单个订阅者。
如果您想将多个订阅者连接到多个发布者,同时仍然具有动态发现的好处,则需要中间的代理;如下图所示。PUB 套接字向代理发送消息;XSUB 将消息转发到 XPUB,然后 XPUB 将这些消息分发给所有监听的 SUB。
创建此类代理的代码很简单(如下),PUB 和 SUB 端很简单,请查看示例代码。
Socket xsub = ctx.createSocket(ZMQ.XSUB);
input.bind( "tcp://*:5500");
Socket xpub = ctx.createSocket(ZMQ.XPUB);
xpub.bind( "tcp://*:5600");
ZMQ.proxy( xsub, xpub, null);
据我所知,代理也将有推/拉套接字来传达发布-订阅消息。那是对的吗?在经纪人应该如何沟通方面的任何帮助将不胜感激。经纪人之间应该有中介吗?
查看Inter-Broker Routing示例的指南