代码之家  ›  专栏  ›  技术社区  ›  Infinity

AMQP重试连接如何与故障转移一起工作?

  •  0
  • Infinity  · 技术社区  · 6 年前

    我找不到有关JMS客户机重新连接如何与故障转移逻辑一起工作的清晰文档。 我查阅了以下与我使用的版本相对应的官方文件:

    JMS客户端指定以下URI进行故障转移并重试:

    String uri = new String("failover:(amqp://host1:5672,amqp://host2:5672)?&failover.maxReconnectAttempts=20");
    javax.jms.ConnectionFactory connectionFactory = new org.apache.qpid.jms.JmsConnectionFactory(uri);
    
    • 是否在每个故障转移URI上应用了failover.maxconnectattempts(即,将在第一个URI上重试20次,如果重新连接失败,将在第二个URI上再尝试20次;对于我来说,这里的警告是,如果默认的最大重新连接值为-1,客户端将在第一个URI上无限期重试,因此故障转移逻辑永远不会到达第二个URI),或者它是两个URI上的循环(即,对第一个URI重试一次,然后对第二个URI也重试一次,然后返回到第一个URI,等等…总共重试20次?当然,我将对此进行测试,但是,官方标准中是否解释了这种行为?

    • 如果客户机正在发送或接收消息,并且host1上的代理存在连接问题,那么发送或接收操作也将重试吗?但是,我希望重试基础连接,不确定发送或接收操作会发生什么。如果发送/接收不是自动重试的,这意味着在发送/接收级别上必须有另一个重试逻辑(我发现这很不可能)。和以前一样,这是在官方标准中记录的吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tim Bish    6 年前