我正在使用ZeroMQ。
我希望节点B订阅节点A。节点A将发送(PUB
?)某些'volatile variable'(例如,某个对象的位置)的值。在这种情况下,“ Volatile”表示节点B只关心最近的值。
结果应该是A可以将值发送给订阅者,但是如果变量的两个值曾经在传出(或传入)队列中排队,则最新值将替换较早的值。另一个结果是:没有高水位线。
很明显,我可以用PUB/SUB
实现这一目标,但这并不能获得大多数最近的价值总是赢。似乎有一些确定的模式可以实现此目的,但我还没有找到它。
(我想这意味着我希望ZeroMQ套接字模式能够像纯udp
一样工作)
满意--一个[[Q:如何使用ZeroMQ制作'共享的易失变量'(s.t.most-recent-value-always-wins])>
如果您的应用程序级逻辑对
PUB/SUB
PUB
-用.send()
-填充消息,其他SUB
-scribe到他们各自的选择主题,以便开始.recv()
-可扩展的正式通信模式原型,我们可以对配置进行微调,使其满足您的所有要求,用(st most-recent-value -总是-胜)如果有人从未使用ZeroMQ,在深入了解更多细节之前,可以在这里先欣赏一下“ ZeroMQ Principles in less than Five Seconds”
.setsockopt( ZMQ_CONFLATE, 1 )
方法只是“切换-ON”这种行为,由Context()
引擎实例对用户无声管理,对“内部”队列管理器的策略。
如果设置,套接字应仅在入站/出站队列中保留一条消息,该消息是最后收到的消息/要发送的最后一条消息。忽略
,特别是其中只有一部分保留在套接字内部队列中。ZMQ_RCVHWM
和ZMQ_SNDHWM
选项。 不支持多部分消息
适用的插座类型ZMQ_PULL, ZMQ_PUSH, ZMQ_SUB, ZMQ_PUB, ZMQ_DEALER