使用ZeroMQ PUB/SUB模型,订阅服务器是否可以根据不仅仅是第一个帧的内容进行过滤?
例如,如果我们有一个包含三个帧的多帧消息。
1)数据类型,
2)仪器,
然后3)对实际数据进行,
是否可以订阅特定的数据类型,仪器对?
(我看到的所有示例只显示基于多部分消息的第一条消息的过滤)。
发布于 2016-02-22 16:33:11
ZeroMQ发布/子过滤的不同模式
初始ZeroMQ模型使用了基于ZeroMQ订阅的过滤.
这对publisher来说更容易,因为它不需要处理SUB-side处理,只需要将所有数据简单地提供给所有SUB-s (是的,代价是网络流量,并导致SUB-side工作负载处理所有传入的BLOB,从PHY-media一路上升到PHY-media,即使它没有向特定的topic.提供子脚本)。是的,在低延迟的设计中相当昂贵)
PUB-side过滤最初是为了以后的实现而提出的。
尽管如此,这种模式不允许您的想法只是在使用PUB/SUB S可调用的Formal P模式。
ZeroMQ协议设计致力于激励用户,如何实现刚刚设计好的分布式系统行为。
正如你的1-2-3意图所理解的那样,一个自定义逻辑应该足以实现所需的处理。
那么,如何解决这个问题呢?
不要犹豫在您的应用程序域特定的解决方案中并行设置几个消息传递/控制中继,它对任何定制的解决方案都更有效,也比尝试将库的原始原型(在本例中是琐碎的topic-based筛选)“弯曲”(在本例中是微不足道的PUB/SUB PUB/SUB筛选)来使一些东西变得有点不同,而不是最初设计的用例更安全。
更真实的是,如果您的领域特定用途是外汇/股票交易,其中延迟是您最坏的敌人,所以一个成功的方法必须尽量减少流解码和可选分支。
纳秒
如果阅读多帧组合(发件人端BLOB程序集)的详细信息,就没有延迟方面的优势,因为整个BLOB只有在完成后才能连接起来--如果您的想法是处理用于信令的初始帧内容,当整个BLOB到达“一起”时,这对SUB-side没有任何好处。
https://stackoverflow.com/questions/35554747
复制相似问题