【问题标题】:ZMQ subscriber filteringZMQ 订阅者过滤
【发布时间】:2015-07-25 07:41:58
【问题描述】:

根据下面的讨论

Can ZMQ publish message to specific client by pub-sub socket?

当订阅者不提供过滤器时,似乎不可能阻止订阅者接收所有消息。

是否有可能不提供过滤器的订阅者不会收到任何消息?即,订阅者只有在知道确切的过滤器时才接收消息(没有通配符等)。

【问题讨论】:

  • 没办法...你没有神秘字节吗,比如0x02之类的?
  • 神秘字节在这里有什么帮助?
  • 你去订阅那个神秘字节只是你的一个订阅者......?或者您将代码设计为 PUSH/PULL

标签: sockets zeromq


【解决方案1】:

主题似乎有点混乱。让我们揭开PUB-SUB

的神秘面纱

案例 1)一个“不提供过滤器”的 SUB

这是实例化后的默认初始状态

aSub_signallingChannelEND = aCentralCONTEXT.socket( zmq.SUB )

在这个初始状态下,自然没有有效的订阅(预)设置,因为 Context() 是一个理性的过程(不是一个 Norn ),因此它不能先验地假设任何这样的普遍有效的订阅 -关键(如果可以的话,那将是非常奥威尔式的,不是吗?)以便灌输SUB-instance,使其从诞生之日起就被“吸入”。

在原始 ZeroMQ v2.x 中(注意,这被记录为对 ZeroMQ 库的最新版本无效)但是这种状态并不意味着 SUB 方不会实际收到任何消息。 v2.x 订阅过滤是在 SUB 端执行的(无论是否出于性能动机的决定),因此线路级检测到“未授权” " 消息仍然是可能的


案例 2)一个 SUB “确实提供了所有过滤器的超集”

短版: 原则上,PUB 方面本身没有控制来区分任何 SUB 方面关于订阅什么和取消订阅的决定。


如何让它以给定的方式工作?

由于 PUB-SUB 消息传递模式是这样定义的,因此您必须帮助自己进行智能分层设置以满足您在 PUB-SUB 模式之外的身份验证需求,或者可以使用其他增加基于身份验证的保护的方法(例如,为代码/解码内容使用基于身份验证的选择性能力的定制权限/密钥,以突出一些可能的方法)。

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多