繁体   English   中英

ZeroMQ:多对多PUB / SUB

[英]ZeroMQ: many to many PUB/SUB

我是ZeroMQ的新手。 我正在编程一个cpp项目:

有不同类型的代理。
每种类型的代理可以同时具有多个代理。
每个代理都会向我的服务器发送一些消息。
不同类型的代理使用不同的端口。
相同类型的代理使用相同的端口。

例如,我们有两种类型的代理: AB
对于类型A ,我们有两个代理: agentA1agentA2
对于类型B ,我们有三个代理: agentB1agentB2agentB3

现在,我同时运行五个代理,因此它们将向服务器发送消息。
agentA1agentA2通过port 5552发送消息,
agentB1agentB2agentB3通过port 5553发送消息。

我愿意做的是使每个代理都成为发布者 ,并使我的服务器成为订户
订户将收听55525553 ,一旦有消息通过两个端口,他将立即执行操作。

现在我知道有一个ZeroMQ模式: PUB/SUB

但是,此模式只有一个发布者和许多订阅者。
对于我来说,我认为我需要许多发行商和许多订户。 每个端口对应一个用户,并且从许多代理接收消息。

我不知道如何实现这些需求。

您正在谈论的内容将在ZMQ上正常运行。 如您所见,每个发布者可以有许多订阅者。 但是每个订阅者本身可以订阅许多发布者。 此外,通常您在发布者上bind() ,在订阅者上connect() ,但也可以将其反转。 唯一的常规限制是每个套接字仅绑定在一个端口上。 因此,您的设置将如下所示:

  (CLIENTS - connect)                   (SERVER - bind)

AgentA1 (PUB) :5552 --------------
                                  |
AgentA2 (PUB) :5552 -------------- -  :5552 (SUB) Server Socket A


AgentB1 (PUB) :5553 -------------- -  :5553 (SUB) Server Socket B
                                  |
AgentB2 (PUB) :5553 --------------
                                  |
AgentB3 (PUB) :5553 --------------

...现在,您不必严格要求为这两种通信类型使用单独的端口,您可以仅使用多帧消息并在消息的第一帧中指示消息/代理类型,这具有附带的好处如果您的项目逐渐需要该功能,则仅允许您订阅感兴趣的消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM