5.5. 故障切换选项
故障转移 URI 以前缀 failover: 开头,并在括号内包含一个用逗号分开的连接 URI 列表。末尾指定了附加选项。前缀为 jms. 的选项应用于括号之外的整体故障切换 URI,并影响其生命周期中的 Connection 对象。
示例:带有故障切换选项的故障切换 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
- 用于增大重新连接延迟值的倍数。默认值为 2.0。
- failover.maxReconnectAttempts
- 在向客户端报告连接失败前允许的重新连接尝试数。默认值为 -1,即没有限制。
- failover.startupMaxReconnectAttempts
-
对于之前从未连接到远程对等点的客户端,此选项控制在将连接报告失败前要进行连接的尝试次数。如果未设置,则使用
maxReconnectAttempts的值。 - failover.warnAfterReconnectAttempts
- 在记录警告前尝试失败的次数。默认值为 10。
- failover.randomize
- 如果启用,则在尝试连接到其中之一前,故障转移 URI 集合会被随机清除。这有助于在多个远程同级之间更均匀地分发客户端连接。它默认是禁用的。
- failover.amqpOpenServerListAction
-
控制服务器中的连接"open"帧提供故障转移主机到客户端列表时故障转移传输的行为。有效值为
REPLACE、ADD或IGNORE。如果配置了REPLACE,当前服务器以外的所有故障切换 URI 都将替换为服务器提供的 URI。如果配置了ADD,服务器提供的 URI 会被添加到现有的故障切换 URI 集合中,并带有 deduplication。如果配置了IGNORE,服务器的所有更新都会被忽略,且不会更改正在使用的故障切换 URI。默认值为REPLACE。
故障转移 URI 还支持将嵌套选项定义为指定 AMQP 和传输选项值的方法,适用于所有嵌套代理 URI。这可以通过之前为非故障切换代理 URI 提供的相同 transport. 和 amqp. 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