rabbitmq4.0以下版本遇到断网重连异常

本文分析了一个客户端遇到的RabbitMQ消费者不更新信息的问题,发现是consumer未设置自动恢复。尽管Connection已启用自动恢复,但需额外设置setTopologyRecoveryEnabled以确保Consumer在异常后能恢复。对于使用MQ版本3.8.9的项目,建议检查代码中是否已开启Topology自动恢复,因为4.0.0及以上版本默认开启。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象描述:一个客户端反应经常性不更新显示信息,分析是rabbitmq的消息没有及时consumer。登陆服务器控制台查看消息状态是ready。终端连接状态running。但就是不消费信息了。

分析:

怀疑网络中途有中断波动

1.代码里已经设置setAutomaticRecoveryEnabled,所以Connection连接状态自动恢复了

2.但是consumer却没有设置自动恢复。

通过查看资料:

在客户端开启ConnectionTopology(Queue、Exchange、Binding、Consumer)自动恢复的方法如下:

  • factory.setAutomaticRecoveryEnabled(boolean):用于开启或关闭Connection自动恢复。
  • factory.setNetworkRecoveryInterval(long):用于设置重试时间间隔。如果Connection自动恢复异常,设置了Connection自动恢复的客户端将在一段固定时间间隔(默认为5秒)后重试。
  • factory.setTopologyRecoveryEnabled(boolean):用于开启Topology自动恢复。Topology包括Queue、Exchange、Binding、Consumer。

处置方法:

设置setTopologyRecoveryEnabled。主要项目用的MQ版本是3.8.9,4.0.0及以上版本Java客户端默认开启Connection和Topology自动恢复,您无需在代码中设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值