ZMQ 订阅者过滤
ZMQ subscriber filtering
根据下面的讨论
Can ZMQ publish message to specific client by pub-sub socket?
当订阅者不提供过滤器时,似乎无法阻止订阅者接收所有消息。
有没有可能没有提供过滤器的订阅者收不到任何消息?即,如果订阅者知道确切的过滤器(没有通配符等),他只会接收消息。
主题似乎有点混乱。让我们揭开 PUB-SUB
的神秘面纱
案例 1) SUB "does not provide a filter"
顺便说一句,这是实例化后的默认初始状态
aSub_signallingChannelEND = aCentralCONTEXT.socket( zmq.SUB )
在此初始状态下,自然没有有效的订阅(预)设置,因为 Context()
是一个理性过程(不是 Norn),因此它不能先验地假设任何此类普遍有效的订阅密钥(如果可以的话,那将是非常奥威尔式的,不是吗?)以便灌输 SUB
-instance 从它诞生以来就拥有它 "breathed-in"。
在原始的 ZeroMQ v2.x 中(注意,这被记录为对 ZeroMQ 库的最新版本无效)但是这种状态并不意味着SUB
方没有得到物理接收任何消息。 v2.x 订阅过滤是在 SUB
端执行的(无论是否出于性能驱动的决定),因此线级 仍然可以检测到 "un-authorised" 条消息
案例 2) SUB "did provide a super-set of all filters"
短版:
原则上,PUB
-side 本身没有控制来区分任何 SUB
-side 决定什么订阅和取消订阅。
如何让它以给定的方式工作?
由于 PUB-SUB
消息传递模式是以这种方式定义的,因此您必须通过智能分层设置来满足超出 PUB-SUB
模式,或者可以使用其他方法来增加基于身份验证的保护(例如,为 code/decode 内容使用量身定制的 right/key 用于基于身份验证的选择性能力,以突出一些可能的方法).
根据下面的讨论
Can ZMQ publish message to specific client by pub-sub socket?
当订阅者不提供过滤器时,似乎无法阻止订阅者接收所有消息。
有没有可能没有提供过滤器的订阅者收不到任何消息?即,如果订阅者知道确切的过滤器(没有通配符等),他只会接收消息。
主题似乎有点混乱。让我们揭开 PUB-SUB
案例 1) SUB "does not provide a filter"
顺便说一句,这是实例化后的默认初始状态
aSub_signallingChannelEND = aCentralCONTEXT.socket( zmq.SUB )
在此初始状态下,自然没有有效的订阅(预)设置,因为 Context()
是一个理性过程(不是 Norn),因此它不能先验地假设任何此类普遍有效的订阅密钥(如果可以的话,那将是非常奥威尔式的,不是吗?)以便灌输 SUB
-instance 从它诞生以来就拥有它 "breathed-in"。
在原始的 ZeroMQ v2.x 中(注意,这被记录为对 ZeroMQ 库的最新版本无效)但是这种状态并不意味着SUB
方没有得到物理接收任何消息。 v2.x 订阅过滤是在 SUB
端执行的(无论是否出于性能驱动的决定),因此线级 仍然可以检测到 "un-authorised" 条消息
案例 2) SUB "did provide a super-set of all filters"
短版:
原则上,PUB
-side 本身没有控制来区分任何 SUB
-side 决定什么订阅和取消订阅。
如何让它以给定的方式工作?
由于 PUB-SUB
消息传递模式是以这种方式定义的,因此您必须通过智能分层设置来满足超出 PUB-SUB
模式,或者可以使用其他方法来增加基于身份验证的保护(例如,为 code/decode 内容使用量身定制的 right/key 用于基于身份验证的选择性能力,以突出一些可能的方法).