Python 使用者在重新启动后不会重新连接

Python 使用者在重新启动后不会重新连接,python,rabbitmq,pika,Python,Rabbitmq,Pika,有时,我们的rabbit消息服务器需要重新启动。然而,在此之后,通过基本消费阻塞调用进行侦听的一些消费者在自己重新启动之前不会消费任何消息,也不会引发任何异常 出现这种情况的原因是什么?我可以如何修复?在connectionFactory中,请确保以下属性设置为true: 有关详细信息,请参阅connectionFactory中的文档,请确保以下属性设置为true: 有关更多详细信息,请参阅文档,正如我在评论中提到的,每个AMQP客户端库都有不同的恢复连接的方法,有些方法依赖于开发人员。没有标准

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


出现这种情况的原因是什么?我可以如何修复?

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


有关详细信息,请参阅connectionFactory中的文档,请确保以下属性设置为true:


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

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

Pika将连接恢复作为起点。请注意,该代码用于未发布的Pika版本(
1.0.0
)。如果您在
0.12.0
上,则必须根据方法调用调整参数

测试和实现连接恢复的最佳方法是模拟故障条件,然后为其编码。运行应用程序,然后关闭
beam.smp
进程(RabbitMQ)以查看发生了什么。如果您有RabbitMQ群集,请使用防火墙规则模拟网络分区。你的应用程序能处理吗?运行
rabbitmqctl stop\u应用程序时会发生什么;睡眠10;rabbitmqctl启动应用程序
?你的应用程序能处理吗

通过TCP代理运行应用程序,如,并引入延迟和其他非最佳条件。关闭代理以模拟TCP连接突然关闭。在每种情况下,对该故障情况进行编码并记录事件,以便以后有人能够诊断发生了什么


我看到过太多的开发人员为“快乐之路”编写代码,结果他们的应用程序在生产中出现了惊人的故障,无法确定故障的来源。

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

Pika将连接恢复作为起点。请注意,该代码用于未发布的Pika版本(
1.0.0
)。如果您在
0.12.0
上,则必须根据方法调用调整参数

测试和实现连接恢复的最佳方法是模拟故障条件,然后为其编码。运行应用程序,然后关闭
beam.smp
进程(RabbitMQ)以查看发生了什么。如果您有RabbitMQ群集,请使用防火墙规则模拟网络分区。你的应用程序能处理吗?运行
rabbitmqctl stop\u应用程序时会发生什么;睡眠10;rabbitmqctl启动应用程序
?你的应用程序能处理吗

通过TCP代理运行应用程序,如,并引入延迟和其他非最佳条件。关闭代理以模拟TCP连接突然关闭。在每种情况下,对该故障情况进行编码并记录事件,以便以后有人能够诊断发生了什么


我见过太多的开发人员为“快乐之路”编写代码,结果他们的应用程序在生产中出现了惊人的故障,而无法确定故障的来源。

由于您没有告诉我们您的消费者正在使用什么客户端库,所以不可能回答这个问题。每个库都有不同的恢复方式,有些库依赖于您自己进行恢复。很好,您是客户。我想我正在寻找一种恢复rabbitmq连接的规范方法,因为我的同事使用了多种libs和语言。然而,在第一个例子中,我的团队使用的是python和pika,因为您没有告诉我们您的客户使用的是什么客户端库,所以不可能回答这个问题。每个库都有不同的恢复方式,有些库依赖于您自己进行恢复。很好,您是客户。我想我正在寻找一种恢复rabbitmq连接的规范方法,因为我的同事使用了多种libs和语言。然而,首先,我的团队使用python和pika。
factory.setAutomaticRecoveryEnabled(true);