Zeromq在PubSub模式下应该绑定哪个socket?

7
我一直在阅读有关ZeroMQ的内容,特别是NetMQ方面的,几乎我看到的所有Pub / Sub示例都使用Bind Publisher套接字,然后Subscriber套接字连接到其他端点。
所以我想知道是否可以反过来,也就是绑定Subscriber套接字,然后让Publisher连接它。
这可行吗?(文档中没有找到明确的说明)使用这种连接策略有什么缺点?
任何帮助都将很有用。
1个回答

11

是的,您可以反转连接,使用这种连接策略没有任何缺点......只要它符合您的目的。

在ZMQ中,“绑定”和“连接”的驱动概念是,一侧通常被认为更可靠(通常节点较少),而另一侧被认为更短暂(可能有更多的节点)。 可靠的一侧将被视为您的“服务器”,您应该在该侧执行bind(),短暂的一侧将被视为您的“客户端”(或客户端s),您应该在该侧执行connect()

通常,我们认为稳定的“服务器”不断地发布信息,给许多“客户端”订阅者,这些订阅者可能会来来去去。 这在您看到的示例中表示为:在pub上绑定,在sub上连接。

但是,您也可以轻松地将稳定的“服务器”订阅到连接到其的许多“客户端”发布者的任何输出,接受它们发送的任何信息,同时它们可用。 在sub上绑定,在pub上连接。

您不仅限于一个服务器,这只是最简单的例子-但是,如果您在同一台计算机上运行所有套接字,则受到更多限制。 在同一地址上绑定多个套接字将产生冲突,但您可以连接任意数量的套接字到相同的地址。

在许多情况下,通信的两端都真正意图是可靠和长期运行的,在这种情况下,将发送信息的节点视为服务器,而将接收信息的节点视为客户端很有用。 在这种情况下,我们回到了在pub上绑定,在sub上连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接