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

Rabbit MQ重新启动后,使用者不会重新连接

  •  0
  • user1561108  · 技术社区  · 8 年前

    有时,我们的rabbit消息服务器需要重新启动。然而,在这之后,一些正在通过基本消费阻塞调用监听的消费者在重新启动之前不会消费任何消息,也不会引发任何异常。

    这是什么原因?我该怎么解决?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Thiru    8 年前

    在connectionFactory中,请确保将以下属性设置为true:

    factory.setAutomaticRecoveryEnabled(true);
    

    有关详细信息,请参阅文档 here

        2
  •  0
  •   Luke Bakken    8 年前

    正如我在评论中提到的,每个AMQP客户机库都有不同的恢复连接的方法,有些依赖于开发人员。有 规范方法。

    皮卡有 this example 作为一个 起点 用于连接恢复。请注意,代码是针对未发布的Pika版本的( 1.0.0 ). 如果你在 0.12.0 必须根据方法调用调整参数。

    这个 最佳方法 测试和实现连接恢复就是模拟故障情况,然后对其进行编码。运行应用程序,然后终止 beam.smp 处理(RabbitMQ)以查看发生了什么。如果您有RabbitMQ集群,请使用防火墙规则模拟网络分区。你的申请能处理吗?你跑的时候会发生什么 rabbitmqctl stop_app; sleep 10; rabbitmqctl start_app ? 你的应用程序能处理吗?

    通过类似于 toxiproxy 并引入延迟和其他非最优条件。关闭代理以模拟突然关闭的TCP连接。在每种情况下,该故障条件的代码和 记录事件 以便以后有人能诊断出发生了什么事。

    我见过太多的开发人员为“幸福之路”编写代码,结果他们的应用程序在生产中失败得惊人,无法确定失败的根源。

    推荐文章