ZMQ:没有订阅者时,是否在扩展的 pub-sub 中发布消息?

ZMQ: are messages published in extended pub-sub when there are no subscribers?

根据 ZMQ 指南,当使用标准的发布-订阅模式时,如果没有连接的客户端,发布者不会发布任何消息。

If a publisher has no connected subscribers, then it will simply drop all messages.

但是,如果您使用扩展的发布-订阅模式,即发布者和订阅者由 zmq_proxy 与 xsub 和 xpub 套接字进行调解,会发生什么情况?如果没有订阅者,很难推断在这种情况下会发生什么。我的假设是 xsub 套接字充当订阅者,并且 all 发布者将继续发布,而不管是否有任何实际订阅者连接到代理。但这只不过是一个有根据的猜测。此外,很难通过实验验证在这种情况下会发生什么——我想我必须使用 wireshark 或类似的东西来监控网络流量。以为我会在开始那条路之前问这个问题 :)

提前致谢

Proxy 将发布的消息从上游生产者 (PUB) 路由到下游消费者 (SUB)。它将 subscribe/unsubscribe 消息从消费者传递给发布者。发布者的 PUB 套接字丢弃任何没有订阅的消息。

所以如果Proxy下游没有消费者,Producer只向Proxy发布消息,那么Producer的所有消息都会被它的PUB socket丢弃。只有在消费者通过代理的 XPUB 订阅后(代理又通过 XSUB 将订阅转发给生产者到 PUB),消息才会真正被生产者的 PUB 套接字通过代理转发给消费者。

我不确定代理是主动管理传递的订阅,还是简单地传递它们并让生产者的 PUB 套接字处理它。我认为是后者。代理 确实 缓冲消息以允许消费者(或生产者)outage/reconnect。