如何使用ZeroMQ制作“共享易失变量”?

问题描述 投票:1回答:1

我正在使用ZeroMQ。

我希望节点B订阅节点A。节点A将发送(PUB?)某些'volatile variable'(例如,某个对象的位置)的值。在这种情况下,“ Volatile”表示节点B只关心最近的值。

结果应该是A可以将值发送给订阅者,但是如果变量的两个值曾经在传出(或传入)队列中排队,则最新值将替换较早的值。另一个结果是:没有高水位线。

很明显,我可以用PUB/SUB实现这一目标,但这并不能获得大多数最近的价值总是赢。似乎有一些确定的模式可以实现此目的,但我还没有找到它。

(我想这意味着我希望ZeroMQ套接字模式能够像纯udp一样工作)

zeromq distributed-system pyzmq multi-agent
1个回答
1
投票

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_RCVHWMZMQ_SNDHWM选项。 不支持多部分消息

,特别是其中只有一部分保留在套接字内部队列中。

适用的插座类型ZMQ_PULL, ZMQ_PUSH, ZMQ_SUB, ZMQ_PUB, ZMQ_DEALER


就这么简单!掌握零禅艺术的一切都很好。

© www.soinside.com 2019 - 2024. All rights reserved.