使用zeromq设计具有多个代理的发布订阅系统

时间:2013-08-14 19:06:44

标签: zeromq publish-subscribe

几天前我开始使用zeromq。我的目标是设计一个包含多个代理(经纪人网络)的发布订阅系统。我已经阅读了zeromq指南的相关部分,并为简单的pub子系统编写了代码。如果有人可以帮我解决以下问题:

从我能想到的,经纪人(xpub-xsub套接字)也将有推/拉套接字来传递pub-sub消息。那是对的吗?任何帮助经纪人应如何沟通将不胜感激。经纪人之间是否应该有中间人?

任何设计指南都会非常有用。谢谢。

1 个答案:

答案 0 :(得分:2)

  

指南说我们应该在动态时使用xpub和xsub套接字   发现是必需的。有人可以解释一下差异   套接字之间:xpub和pub,以及xsub和sub。

XPUB相比,

PUB只意味着许多发布商,这意味着单个发布商。

XSUB相比,

SUB表示许多订阅者,这意味着单个订阅者。

如果您希望将许多订阅者连接到多个发布者,同时仍然享受动态发现的好处,则需要在中间使用代理;类似下面的插图。 PUB套接字向代理发送消息; XSUB将消息转发给XPUB,然后XPUB将这些消息分发给所有收听的SUB。

创建此类代理的代码很简单(如下),PUB和SUB结尾很简单,请查看示例code

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);

enter image description here

  

从我能想到的,经纪人也将有推/拉插座   传递pub-sub消息。那是对的吗?任何帮助   经纪人应如何沟通的条款将不胜感激。   经纪人之间是否应该有中间人?

查看Inter-Broker Routing示例指南