首页 文章

zeromq DEALER客户端到多个服务器(ROUTER)

提问于
浏览
6

我正在使用ZEROMQ进行分布式消息传递应用程序 . 需要将客户端(DEALER套接字)连接到多个服务器(服务器端的ROUTER套接字) . 在CLIENT方面我有哪些选择?

  • 在客户端为每个服务器 endpoints (ROUTER套接字)创建DEALER套接字 .

  • 在客户端只创建一个DEALER套接字并添加多个 endpoints .

我尝试了选项2 - 连接到多个 endpoints ,但消息总是转到第一个连接的 endpoints . 遵循以下步骤:

  • 创建DEALER套接字

  • 连接到第一个 endpoints

  • 然后在运行时,使用socket.connect( endpoints )将另一个 endpoints 添加到套接字 . 我需要重新连接吗?

在DEALER套接字中,如果特定 endpoints 连接到多个 endpoints ,则无法在特定 endpoints 上发送消息 .

任何的想法?

1 回答

  • 4

    ZeroMQ将某些行为编码为套接字类型 . 这些主要涉及:

    • 处理多个对等体

    • 处理无法投递的邮件

    • 处理过多的吞吐量(HWM)

    DEALER套接字是可以连接到多个对等体的套接字,并使用LRU(最近最少使用的,也称为循环法)来决定哪个对等体获取每个消息 . 如果您不想要这种行为,那么您不希望DEALER套接字具有多个对等体 .

    如果要确定哪个对等方获取消息,则有两个选项:

    • 为每个对等方创建一个DEALER,并发送相应的套接字

    • 创建连接到所有对等方的单个ROUTER,并使用IDENTITY前缀来路由消息 . 您可能需要通过侧通道传递IDENTITIES,以便使用ROUTER-ROUTER连接 .

    在运行时,使用socket.connect( endpoints )将另一个 endpoints 添加到套接字 . 我需要重新连接吗?

    不,您不需要重新连接 . 您可以在程序中随时添加(和删除)对等体 .

相关问题