我有一个简单的ZeroMQ PUB/SUB
架构,用于将数据从发布者流向订阅者。订阅者建立连接后,发布者开始流式传输数据,但是我想对其进行修改,以便发布者首先发布数据的最新快照,然后再发布流式传输。
我该如何实现?
答案 0 :(得分:0)
Q :我该如何实现这个?
( this 是:“ ...正在流式传输数据,但我想对其进行修改,以便发布者先发布数据的最新快照,然后再发布最新快照。开始流式传输。”
实例化一对 PUB
-s,第一个称为 aSnapshotPUBLISHER
,第二个称为 aStreamingPUBLISHER
强>。对于前者,使用 XPUB
-原型可以帮助轻松集成一些用于订户基础管理的附加逻辑(具有NTH功能,但有点O / T ATM)。
使用aSnapshotPUBLISHER.setsockopt( ZMQ_CONFLATE, 1 )
配置前者,其他设置可能着重于减少延迟并确保所有必需的资源都可用于通过aStreamingPUBLISHER
进行的平滑流传输,同时还具有随时可以在其中使用的最新快照。 aSnapshotPUBLISHER
(对于任何新手)。
SUB
端代理仅遵循此方法,设置了一对工作(.bind()/.connect()
)链接(到PUB
-s或一对{{1} } + XPUB
),并且已确认链接正常运行,请停止从PUB
获取快照并继续使用,但是(现在已使用BaseID / TimeStamp / FrameMarker或类似对齐的方式)进行了流传输-来自aSnapshotPUBLISHER
的数据。
一旦低延迟的经验法则将任何数据打包/压缩成正确的格式,则不支持多帧消息有效载荷的已知aStreamingPUBLISHER
模式的局限性就无需考虑麻烦了。大小的BLOB,而不是在网络上移动任何形式的“装饰”但效率低下的数据表示格式。