springboot连接rabbitmq网络异常时,不能自动重连的问题
在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进程号还在,因此处于假死状态。
具体原因还未知