ZeroMQ订户过滤多部分消息

时间:2016-02-22 13:18:18

标签: filtering zeromq

使用ZeroMQ PUB/SUB 模型,订阅者是否可以根据超过第一帧的内容进行过滤?

例如,如果我们的多帧消息包含三个框架 1)数据类型,则 2) 仪器,
然后 3)实际数据,是否可以订阅特定数据类型,仪器对?

(我看到的所有示例都只显示基于多部分消息的第一条消息的过滤。)

1 个答案:

答案 0 :(得分:0)

ZeroMQ PUB / SUB过滤的不同模式

初始ZeroMQ模型使用 sub 划线器端基于子描述的过滤。

pub lisher更容易,因为它不需要处理 sub 特定于划线器的处理,只需将所有数据都提供给所有SUB - s(是的) ,以牺牲网络流量为代价,并导致 SUB 侧工作负载处理所有传入的BLOB,从PHY - 媒体一直向上,即使它没有 sub 抄写它是特定的 topic 。是的,在低延迟设计中相当昂贵)

PUB -side过滤最初提议用于以后的实施

但是,此模式不允许您的想法仅使用PUB/SUB S 可解析 F 正常 C 通信的 p attern。

ZeroMQ协议设计致力于激励用户,如何实现恰当设计的分布式系统的行为。

从您的1-2-3意图中可以理解,自定义逻辑应足以实现所需的处理。

那么,如何处理解决方案?

在您的应用领域特定解决方案中,不要犹豫并行设置多个消息/控制中继,它对于任何量身定制的解决方案都要好得多,并且比尝试 “弯曲”更安全 一个库的原始原型(在这种情况下是简单的PUB/SUB topic - 基于过滤),使某些东西有点不同,而不是设计了原始用例。

更真实的是,如果您的特定于域的使用是FOREX / Equity交易,其中延迟是您最大的敌人,那么成功的方法必须尽可能地最小化流解码和替代分支。

纳秒确实重要

如果读取有关多帧组合(发送方BLOB程序集)的详细信息,则没有延迟优势,因为整个BLOB只有在完成后才会进入线路 - 如果您的想法是处理信令的初始帧内容,那么您的SUB方没有任何优势,因为整个BLOB一起到达“