springboot连接rabbitmq网络异常时,不能自动重连的问题

发布时间 2023-10-18 10:41:20作者: zhenjingcool

在rabbitmq官网的java api处:https://www.rabbitmq.com/api-guide.html#recovery介绍了java连接rabbitmq异常恢复的问题。其中提及了如下内容

  • As of version 4.0.0 of the Java client, automatic recovery is enabled by default (and thus topology recovery as well).

也就是说当出现网络异常时,amqp-client-4.0.0.jar开始会自动重连。

我项目中使用的是amqp-client-5.14.3.jar。

但是问题来了。我的项目平时运行正常,但是时不时的会出现无法重连的情况。见下图

大部分时间是这样的

但是时不时的是这样的

也就是说大部分时间,网络状况差的时候,java服务重连rabbitmq没问题,但是偶尔会出现问题,表现上就是java服务假死了。

猜测是网络异常使rabbitmq客户端抛出MissedHeartbeatException,触发了springboot的某个机制使java服务崩溃。但是java进程号还在,因此处于假死状态。

具体原因还未知