断线重连机制是ActiveMQ的高可用性具体体现之一。ActiveMQ提供failover机制去实现断线重连的高可用性,可以使得连接断开之后,不断的重试连接到一个或多个brokerURL。
默认情况下,如果client与broker直接的connection断开,则client会新起一个线程,不断的从url参数中获取一个url来重试连接。
但有时在做开发时可能不需要连接服务器,这时程序在后台出现了无限制的请求连接,导致不停的在访问占用资源。
出现的异常如下:
ERROR 2019-11-08 14:13:59.235 192.168.223.1 org.springframework.jms.listener.DefaultMessageListenerContainer -
Could not refresh JMS Connection for destination 'XXXXXXXX'
- retrying using FixedBackOff{interval=5000, currentAttempts=2, maxAttempts=unlimited}.
可以看出maxAttempts这个参数出现无限制的情况。
如果想要修改不需要无限重连的话。可以通过设置BackOff参数来定义重连次数。
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
//断线重连,5秒钟一次,一共5次
factory.setBackOff(new FixedBackOff(5000, 5));