前面讲述的都是Client配置连接到指定的broker上,但是,如果Broker的连接失败怎么办呢?此时,Client有两个选项:要么立刻死掉,要么连接到其他的Broker上。
2. Failover Protocol的配置方式默认的情况下,这种协议用于随机的去选择一个链接去连接,如果连接失败了,那么会连接到其他的Broker上。默认配置定义了延迟重新连接,意味着传输将会在10s后自动去重新连接可用的broker.当然所以有的重新连接参数都可以根据应用的需要而配置的。
3. Failover Protocol 使用示例在客户端程序中创建ConnectionFactory时使用:
//随机连接不同的broker
ConnectionFactory factory = new ActiveMQConnectionFacory("failover:(tcp:127.0.0.1:61616,tcp:127.0.0.1:61716)?randomize=true")
1. initialReconnectDelay: 在第一次尝试重新连接之前等待的时间长度(毫秒),默认10
2. maxReconnectDelay: 最长重连时间间隔(毫秒),默认30000
3. useExponentialBackOff: 重连时间间隔是否以指数形式增长,默认true
4. backOffMultiplier:递增倍数:默认2.0
5. maxReconnectAttempts: 默认1|0,自5.6版本开始,-1为默认值,代表不限重试次数,0标识从不重试(只尝试连接一次,并不重连),5.6以前的版本,0为默认值,代表不重试,如果设置大于0的数,则代表最大重试次数。
6. startupMaxReconnectAttempts: 初始化时的最大重试次数,一旦连接上,将使用maxReconnectAttempts的配置,默认0
7. randomize: 使用随机连接,以达到负载均衡的目的,默认true
8. backup: 提前初始化一个未使用的链接,以便进行快速的失败转移,默认false.
10. trackMessages: 设置是否缓存(故障发生时)尚未传送完成的消息,当broker一旦重新连接成功,便将这些缓存中的消息刷新到新连接的代理中,使得消息可以在broker切换前后顺利传送。默认false
11. maxCacheSize: 当trackMessage启动时,缓存的最大子接,默认为127*1024bytes
12. updateURISupported:设定是否可以动态修改broker uri(自5.4版本开始),默认true.