【问题标题】:zeromq DEALER client to multiple servers (ROUTER)zeromq DEALER 客户端到多个服务器 (ROUTER)
【发布时间】:2013-09-28 18:12:24
【问题描述】:

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

  1. 在客户端为每个服务器端点(ROUTER 套接字)创建 DEALER 套接字。
  2. 在客户端仅创建一个 DEALER 套接字并添加多个端点。

我尝试了选项 2 - 连接到多个端点,但消息总是发送到第一个连接的端点。遵循以下步骤:

  • 创建 DEALER 套接字
  • 连接到第一个端点
  • 然后在运行时,使用 socket.connect(endpoint) 将另一个端点添加到套接字。 我需要重新连接吗?

在 DEALER 套接字中,没有选项可以在特定端点上发送消息,以防它连接到多个端点。

有什么想法吗?

【问题讨论】:

    标签: zeromq


    【解决方案1】:

    ZeroMQ 将某些行为编码为套接字类型。这些主要处理:

    1. 处理多个对等点
    2. 处理无法送达的消息
    3. 处理过多的吞吐量 (HWM)

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

    如果您想决定哪个对等方收到消息,有两种选择:

    1. 为每个对等方创建一个 DEALER,并在适当的套接字上发送
    2. 创建一个连接到所有对等体的单个 ROUTER,并使用 IDENTITY 前缀来路由消息。您可能需要通过侧通道传递 IDENTITIES,才能使用 ROUTER-ROUTER 连接。

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

    不,您不需要重新连接。您可以在计划期间随时添加(和删除)对等节点。

    【讨论】:

    • 你好,朋友。我有 DEALER-ROUTER-DEALER 模式。当DEALER client 向ROUTER 发送[X] 时,路由器会收到[I, X],其中I 是发送者的身份。当ROUTER 发送消息[I, X] 时,以身份I 连接的DEALER 套接字会收到消息[X]。直到这里一切都好.. 1 of 2
    • 我如何在ZMQ_ROUTER 端,当我收到来自一个对等点ZMQ_DEALER 的消息时,将此消息发送给另一个ZMQ_DEALER 对等点?我需要路由器之前知道ZMQ_DEALER 对等方的两个身份,存储它们并使用这些身份发送消息?我有这个问题以防万一stackoverflow.com/questions/49289072/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 2021-08-17
    • 2021-09-28
    相关资源
    最近更新 更多