5.5. 故障转移选项
故障转移 URI 从前缀 failover:
开始,并在括号内包含以逗号分隔的连接 URI 列表。其他选项在末尾指定。前缀为 jms.
的选项应用于括号之外的总体故障转移 URI,并影响 其生命周期的连接
对象。
示例:带有故障切换选项的故障转移 URI
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.maxReconnectAttempts=20
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.maxReconnectAttempts=20
括号中的单个代理详情可以使用之前定义的 transport.
或 amqp.
选项。它们在每次主机都连接到时应用。
示例:带有每个连接传输和 AMQP 选项的故障转移 URI
failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?jms.clientID=foo
failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?jms.clientID=foo
下面列出了用于故障转移的所有配置选项。
- failover.initialReconnectDelay
- 客户端在第一次尝试重新连接到远程对等点前等待的时间(毫秒)。默认值为 0,表示第一个尝试会立即发生。
- failover.reconnectDelay
- 重新连接尝试之间的时间(毫秒)。如果没有启用 backoff 选项,这个值会保持恒定状态。默认值为 10。
- failover.maxReconnectDelay
- 客户端在尝试重新连接前等待的时间。只有在启用了 backoff 功能来确保延迟不会增长太大时才使用这个值。默认值为 30 秒。
- failover.useReconnectBackOff
- 如果启用,则重新连接尝试之间的时间会根据配置的倍数增加。它会被默认启用。
- failover.reconnectBackOffMultiplier
- 用于增大 reconnection delay 值的倍数。默认值为 2.0。
- failover.maxReconnectAttempts
- 在向客户端报告连接失败前允许的重新连接尝试次数。默认值为 -1,代表没有限制。
- failover.startupMaxReconnectAttempts
-
对于之前从未连接到远程对等点的客户端,这个选项控制在报告连接失败前要连接的尝试次数。如果未设置,则使用
maxReconnectAttempts
的值。 - failover.warnAfterReconnectAttempts
- 重新连接失败次数,直到记录警告为止。默认值为 10。
- failover.randomize
- 如果启用,在尝试连接到其中一个故障转移 URI 之前,会随机执行一组故障转移 URI。这有助于在多个远程对等点之间更均匀地分发客户端连接。它默认是禁用的。
- failover.amqpOpenServerListAction
-
控制当服务器中连接"open"帧提供故障转移主机到客户端的列表时,故障转移传输的行为方式。有效值为
REPLACE
、ADD
或IGNORE
。如果配置了REPLACE
,则当前服务器以外的所有故障转移 URI 都替换为服务器提供的。如果配置了ADD
,则服务器提供的 URI 将添加到现有故障转移 URI 集合中,并去除重复数据。如果配置了IGNORE
,则忽略来自服务器的任何更新,且不会对正在使用的故障转移 URI 进行任何更改。默认值为REPLACE
。
故障转移 URI 还支持定义嵌套选项,作为指定适用于所有嵌套代理 URI 的 AMQP 和传输选项值的方法。这使用相同的 传输实现。
和 amqp。
之前为非故障切换代理 URI 概述的 URI 选项,但带有 failover.nested
的前缀。例如,要将 amqp.vhost
选项的值应用到连接到的每个代理,您可能有一个类似如下的 URI:
示例:使用共享传输和 AMQP 选项的故障转移 URI
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.nested.amqp.vhost=myhost
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.nested.amqp.vhost=myhost