根据0MQ指南,在这种情况下,XSUB-XPUB代理可以访问消费者与主题订阅相关的(否则隐藏)消息:
许多出版商(UP)—> XSUB |经纪人| XPUB ……
xpub / xsub代理处理订阅和消息重复,以便您从应用程序中省去费用。它需要X,因此订阅消息可以路由回主发布者。
如果您不使用xpub / xsub并且您希望主发布者处理所有订阅,那么您也可以放弃代理
例如,在下面的情况下,您的应用程序必须处理/存储3个订阅并发送每个消息的3个副本
-> SUB PUB -> SUB -> SUB
如果您使用xpub / xsub代理,则您的发布者只能看到一个订阅,并且只发送每个消息的一个副本。经纪人XPUB套接字现在正在完成所有工作,X允许第一个订阅通过XSUB套接字传播到您的应用程序PUB套接字。
-> SUB PUB -> XSUB(BR)XPUB -> SUB -> SUB
想象一下,你有100个客户和1000个订阅,经纪人(你可以扇出经纪人)允许你扩展。
在制作概念验证程序之后。
的 答案1) 强> 。是的,这是对的。在经纪人,记得要做
subSocket.bind( "tcp://*:5001" ) // publishers connect to broker endpoint subSocket.subscribe( "" )
以获取所有发布者的所有邮件。
的 回答2) 强> 订阅过滤由XPUB和PUB套接字有效完成。
使用XSUB-XPUB套接字对的原因是将主题订阅(从XPUB进入代理)转发到发布者(通过XSUB),因此代理仅获取其任何订阅者感兴趣的主题的消息。
因此,通过使用XSUB-XPUB代理与SUB-PUB代理,可以将邮件从发布者保存到代理。在这两种情况下,从代理到订户的流量都是相同的。
因为XSUB-XPUB代理的代码很简单,所以没有理由不使用这种组合。