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

时间:2013-09-28 18:12:25

标签: zeromq

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

  1. 在客户端为每个服务器端点(ROUTER套接字)创建DEALER套接字。
  2. 在客户端仅创建一个DEALER套接字并添加多个端点。
  3. 我尝试了选项2 - 连接到多个端点但是消息总是转到第一个连接的端点。遵循以下步骤:

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

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

    有什么想法吗?

1 个答案:

答案 0 :(得分:5)

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

  1. 处理多个同行
  2. 处理无法投递的邮件
  3. 处理过多的吞吐量(HWM)
  4. DEALER套接字是一种可以连接到多个对等体的套接字,并使用LRU(最近最少使用的,也称为循环法)来决定哪个对等体获取每条消息。如果您不想要这种行为,那么您不希望DEALER套接字具有多个对等体。

    如果您想确定哪个对等方获得了消息,则有两种选择:

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

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

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

相关问题