如何获取ZMQ_PUB服务的数据?

时间:2018-02-12 21:49:14

标签: zeromq publish-subscribe

发布商服务是否可以从外部来源接收数据并将其发送给订阅者?

wuserver.cpp示例中,数据是从同一个脚本生成的。

我可以编写一个ZMQ_PUBLISHER实体,它接收来自外部数据源/应用程序的数据......?

enter image description here

在这个肯定中:

  

关于PUB-SUB套接字还有一个重要的事情要知道:您不知道订户何时开始获取消息。即使您启动订阅者,等待一段时间,然后启动发布者,订阅者也将始终错过发布者发送的第一封邮件。这是因为当订阅者连接到发布者时(需要很少但非零的时间),发布者可能已经发送了消息。

这是否意味着, PUB-SUB ZeroMQ模式是为了尽力而为 - UDP风格?

1 个答案:

答案 0 :(得分:1)

  

Q1 :我可以写一个 ZMQ_PUBLISHER 实体,它从外部数据源/应用程序接收数据吗?

A1 :哦,当然,这就是ZeroMQ帮助我们设计智能的原因。想象一下 PUB -side进程还有其他{.bind()| .connect()} - 调用,以便建立到数据馈送器的其他链接,并且您已完成操作希望有方案。在中,这为智能集成异构系统提供了一种新的自由,可以非常有效地相互通信。

  

Q2
这是否意味着, PUB-SUB ZeroMQ模式是为了尽力而为 - UDP风格?

A2 :不,它有另一种含义。在某个不确定时刻新申报的订户实体开始协商其各自的订阅主题过滤,并且这种(分布式)过程需要一些先验未知的时间。除非建立新的/更改过的主题过滤策略,否则无法进入 SUB -side exgress界面以满足.recv() - 呼叫,因此没有人的确可以告诉我,什么时候会发生,可以吗?

在更高层次上,还有另一个众所周知的ZeroMQ二分法 - 零保证原则 - 期望要么得到完整的消息要么根本没有得到,这可以防止框架用户需要处理任何类型的损坏/不一致的消息 - 有效负载。好的,或None。这是一个很好的保修。 的内容越多。