Architecture ZeroMQ发布/XPUB/XSUB/SUB筛选
我试图确定所谓的“扩展酒吧子体系结构”的确切行为和潜在限制 XPUB和XSUB描述如下: 我们需要XPUB和XSUB套接字,因为ZeroMQ执行从订阅者到发布者的订阅转发。XSUB和XPUB与SUB和PUB完全相同,只是它们将订阅公开为特殊消息。代理必须通过从XSUB套接字读取这些订阅消息并将其写入XPUB套接字,将这些订阅消息从订阅者端转发到发布者端。这是XSUB和XPUB的主要用例 我已经将XSUB和XPUB套接字设置为代理的前端和后端,并将另一对成对套接字连接到捕获端口。这允许我观察通过代理传递的消息 在我的架构中,每个节点都是发布和订阅。本质上,我希望这个XPUB/XSUB代理将提供一个共享总线,带有主题前缀订阅 子节点连接后,必须订阅(可能为空)主题。这导致通过代理传输单帧消息。假设我的主题是Architecture ZeroMQ发布/XPUB/XSUB/SUB筛选,architecture,messaging,zeromq,publish-subscribe,Architecture,Messaging,Zeromq,Publish Subscribe,我试图确定所谓的“扩展酒吧子体系结构”的确切行为和潜在限制 XPUB和XSUB描述如下: 我们需要XPUB和XSUB套接字,因为ZeroMQ执行从订阅者到发布者的订阅转发。XSUB和XPUB与SUB和PUB完全相同,只是它们将订阅公开为特殊消息。代理必须通过从XSUB套接字读取这些订阅消息并将其写入XPUB套接字,将这些订阅消息从订阅者端转发到发布者端。这是XSUB和XPUB的主要用例 我已经将XSUB和XPUB套接字设置为代理的前端和后端,并将另一对成对套接字连接到捕获端口。这允许我观察通过
{0xff 0xff}
,消息是:
{0x01 0xFF 0xFF}
前导的0x01
表示订阅,后跟主题字节。类似的消息用0x00
代替0x01
表示取消订阅
我关心的是订阅信息在这个体系结构中到底保存在哪里
根据指南:
在ZeroMQ v3.x中,使用连接的协议(tcp://
或ipc://
)时,在发布服务器端进行过滤
如果确实在发布服务器端执行了过滤,那么在发布服务器上线之前订阅订阅是否有问题?是否会将预先存在的订阅(可能来自XSUB)通知酒吧
我的系统将有具有动态生命周期的节点。这会是一个问题吗?还有其他问题我应该知道吗
如果确实在发布服务器端执行了过滤,那么在发布服务器上线之前订阅订阅是否有问题
不,那会自己解决的
是否会将预先存在的订阅(可能来自XSUB)通知酒吧
没错
我的系统将有具有动态生命周期的节点。这会是一个问题吗?还有其他问题我应该知道吗
您将丢失没有订阅者的已发布邮件,因此请创建windows已发布邮件的代理,或者让订阅者请求发布者重新发布并对邮件进行幂等处理
您可以使用的全双工代理。您会注意到,如果在“ping”(球的发布者)之前启动“pong”(球反弹的墙壁),则所有操作都会正常进行,但如果在pong订阅者启动之前发布ping,则会丢失它