Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture ZeroMQ发布/XPUB/XSUB/SUB筛选_Architecture_Messaging_Zeromq_Publish Subscribe - Fatal编程技术网

Architecture ZeroMQ发布/XPUB/XSUB/SUB筛选

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套接字设置为代理的前端和后端,并将另一对成对套接字连接到捕获端口。这允许我观察通过

我试图确定所谓的“扩展酒吧子体系结构”的确切行为和潜在限制

XPUB和XSUB描述如下:

我们需要XPUB和XSUB套接字,因为ZeroMQ执行从订阅者到发布者的订阅转发。XSUB和XPUB与SUB和PUB完全相同,只是它们将订阅公开为特殊消息。代理必须通过从XSUB套接字读取这些订阅消息并将其写入XPUB套接字,将这些订阅消息从订阅者端转发到发布者端。这是XSUB和XPUB的主要用例

我已经将XSUB和XPUB套接字设置为代理的前端和后端,并将另一对成对套接字连接到捕获端口。这允许我观察通过代理传递的消息

在我的架构中,每个节点都是发布和订阅。本质上,我希望这个XPUB/XSUB代理将提供一个共享总线,带有主题前缀订阅

子节点连接后,必须订阅(可能为空)主题。这导致通过代理传输单帧消息。假设我的主题是
{0xff 0xff}
,消息是:

{0x01 0xFF 0xFF}
前导的
0x01
表示订阅,后跟主题字节。类似的消息用
0x00
代替
0x01
表示取消订阅

我关心的是订阅信息在这个体系结构中到底保存在哪里

根据指南:

在ZeroMQ v3.x中,使用连接的协议(
tcp://
ipc://
)时,在发布服务器端进行过滤

如果确实在发布服务器端执行了过滤,那么在发布服务器上线之前订阅订阅是否有问题?是否会将预先存在的订阅(可能来自XSUB)通知酒吧

我的系统将有具有动态生命周期的节点。这会是一个问题吗?还有其他问题我应该知道吗

如果确实在发布服务器端执行了过滤,那么在发布服务器上线之前订阅订阅是否有问题

不,那会自己解决的

是否会将预先存在的订阅(可能来自XSUB)通知酒吧

没错

我的系统将有具有动态生命周期的节点。这会是一个问题吗?还有其他问题我应该知道吗

您将丢失没有订阅者的已发布邮件,因此请创建windows已发布邮件的代理,或者让订阅者请求发布者重新发布并对邮件进行幂等处理

您可以使用的全双工代理。您会注意到,如果在“ping”(球的发布者)之前启动“pong”(球反弹的墙壁),则所有操作都会正常进行,但如果在pong订阅者启动之前发布ping,则会丢失它