根据下面的讨论
Can ZMQ publish message to specific client by pub-sub socket?
当订户不提供过滤器时,似乎不可能阻止订户接收所有消息。
是否可能,不提供过滤器的订户将不会收到任何消息?即,如果订阅者知道确切的过滤器(没有通配符等),则仅接收消息。
最佳答案
在主题上似乎有些困惑。让我们揭开 PUB-SUB
的神秘面纱
情况1)“不提供过滤器”的SUB
实例化后,这是默认的初始状态
aSub_signallingChannelEND = aCentralCONTEXT.socket( zmq.SUB )
在这种初始状态下,自然没有有效的预订(预设)集,因为
Context()
是一个理性过程(不是Norn),因此它不能先验地假定任何此类通用有效的预订 key (并且它将如果可以的话,还是很漂亮的Orwellish,不是吗?),以便灌输一个SUB
-instance,使其自诞生之日起就“呼吸”。在原始 ZeroMQ v2.x 中(请注意,该文档对于ZeroMQ库的最新版本无效),但是此状态并不意味着
SUB
端实际上不会收到任何消息。 v2.x订阅过滤是在 SUB
-端执行的(无论是由于性能决定而定),因此仍然可以通过电线级检测“未经授权”的消息情况2)“提供了所有过滤器的超集”的SUB
简化版:
原则上,
PUB
-side本质上没有控件来区分关于订阅内容和取消订阅内容的 SUB
-side决定。如何使其以给定的方式工作?
以此方式定义了
PUB-SUB
消息传递模式后,您必须帮助自己完成PUB-SUB
模式之外的身份验证需求的智能层设置,或者可以使用其他方式来添加基于身份验证的保护(例如,为基于身份验证的代码/解码内容的选择性能力确定了正确的权利/关键,以突出显示一些可能的方法)。
关于sockets - ZMQ用户过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624189/