7

我一直在阅读有关 ZeroMQ 的更具体的 NetMQ 以及我看到的几乎每个 Pub/Sub 示例都用于绑定发布者套接字,然后订阅者套接字连接到另一个。

所以我想知道是否可以做相反的事情,我的意思是绑定订阅者套接字,然后发布者连接到它。

这可能吗 ?(我没有在文档中找到任何明确的内容)使用这种连接策略有什么缺点?

任何帮助都会很有用。

4

1 回答 1

11

是的,您可以反转它,并且使用该连接策略没有任何缺点......只要它适合您的目的。

在 ZMQ 中,“绑定”和“连接”背后的驱动概念是,一侧通常被认为更可靠(通常节点会更少),而另一侧被认为更瞬态(并且可能存在更多的节点)。可靠的一方将被视为您的“服务器”,您应该bind()在那一边,瞬态的一方将被视为您的“客户端”(或客户端,您应该connect()在那一边。

通常,我们会想到一个稳定的“服务器”不断地发布信息,向可能来来往往的许多“客户端”订阅者。这在您看到的示例中有所体现:在 pub 上绑定,在 sub 上连接。

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

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

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

于 2015-04-21T18:08:38.840 回答