现象描述:一个客户端反应经常性不更新显示信息,分析是rabbitmq的消息没有及时consumer。登陆服务器控制台查看消息状态是ready。终端连接状态running。但就是不消费信息了。
分析:
怀疑网络中途有中断波动
1.代码里已经设置setAutomaticRecoveryEnabled,所以
Connection
连接状态自动恢复了
2.但是consumer却没有设置自动恢复。
通过查看资料:
在客户端开启
Connection
和
Topology(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自动恢复,您无需在代码中设置。
版权声明:本文为liuxinzhi1982原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。