联邦参考
概述
本指南提供了在定义与联邦 (federation) 相关的各种参数时,所有可设置字段的参考信息。
请参阅其他与联邦相关的指南以了解相关概念及如何上手。
配置参考
策略 (Policies)
策略可以将上游集合(包括名为 "all" 的隐式定义上游集合)或单个上游应用于一组交换机和/或队列。
应用所有上游:
rabbitmqctl set_policy federate-me '^federated\.' '{"federation-upstream-set":"all"}'
应用指定的上游集合:
rabbitmqctl set_parameter federation-upstream-set location-1 '[{"upstream": "up-1"}, {"upstream": "up-2"}]'
rabbitmqctl set_policy federate-me '^federated\.' '{"federation-upstream-set":"location-1"}'
应用单个上游:
rabbitmqctl set_policy federate-me '^federated\.' '{"federation-upstream":"up-1"}'
请注意,在策略中不能同时使用 federation-upstream 和 federation-upstream-set 键。关于策略的更多详情,请参阅策略文档。
上游 (Upstreams)
federation-upstream 参数指定了如何连接到远程节点或集群,以及链路(连接)的某些属性。上游通过 rabbitmqctl set_parameter federation-upstream 命令进行定义,该命令接受上游名称和一个上游定义 JSON 对象。
rabbitmqctl set_parameter federation-upstream 'name' 'json-object'
上游定义对象可以包含以下键:
适用于联邦交换机和联邦队列
| 参数名称 | 描述 |
uri | 上游的 AMQP URI。有关联邦可用的底层客户端库扩展(包括 TLS 相关的扩展),请参阅查询参数参考。 该值可以是字符串,也可以是字符串列表。如果提供了多个字符串,联邦插件在尝试连接时会从列表中随机选择一个 URI。这可用于连接到上游集群,并确保在某个节点发生故障时链路最终能找到另一个节点。所有 URI 均被假定指向单个集群中的节点。要同时连接到不同集群中的多个端点,请使用多个上游。 |
prefetch-count | 在任意给定时间内,链路上待确认的最大投递消息数。默认值为 |
reconnect-delay | 断开连接后等待重新连接代理的时间(以秒为单位)。默认值为 1。 |
ack-mode | 确定链路应如何确认消息。如果设置为 如果设置为 如果设置为 |
trust-user-id | 确定联邦应如何与已验证用户 ID (validated user-id) 功能交互。如果设置为 |
仅适用于联邦交换机
以下上游参数仅适用于联邦交换机。
| 参数名称 | 描述 |
exchange | 上游交换机的名称。默认使用与联邦交换机相同的名称。 |
max-hops | 消息发布到联邦交换机后,在被丢弃前允许经过的最大联邦链路数。默认值为 1。请注意,即使 |
queue-type | 交换机联邦所使用的内部上游队列的队列类型。 默认为 默认情况下,更改队列类型将删除并重新创建上游队列。这可能导致在重新声明期间消息丢失或无法路由。为避免这种情况,请将 可用版本: |
resource-cleanup-mode | 当联邦链路停止时,是否删除内部上游队列。 默认情况下,当联邦链路停止时,内部上游队列会立即被删除。设置为 |
expires | 如果与上游的连接中断,联邦交换机的上游队列在多长时间(毫秒)后可以被删除。默认值为 此设置控制在连接丢失时,上游队列在被标记为可删除前能存活多久。 此值控制上游队列的 TTL 设置。 |
message-ttl | 联邦交换机上游队列中消息的过期时间(以毫秒为单位,参考 此值控制上游队列中消息的 TTL 设置。 |
仅适用于联邦队列
| 参数名称 | 描述 |
queue | 上游队列的名称。默认使用与联邦队列相同的名称。 |
consumer-tag | 从上游消费时使用的消费者标签 (consumer tag)。可选。 |
上游集合 (Upstream Sets)
每个 upstream-set 都是一组上游的集合。使用集合并在联邦策略定义中引用它,比反复列出上游更为方便。
# up-1 and up-2 are previously declared upstreams
rabbitmqctl set_parameter federation-upstream-set location-1 '[{"upstream": "up-1"}, {"upstream": "up-2"}]'
支持的 JSON 对象键包括:
| 参数名称 | 描述 |
upstream | 上游的名称。必需。 |
此外,上游集合中可以覆盖上游的任何属性。
存在一个隐式定义的上游集合 all,它包含目标虚拟主机中创建的所有上游。
集群名称 (cluster name)
联邦插件使用服务器内定义的集群名称来向联邦拓扑中的其他节点标识自己。默认值由 RabbitMQ 节点名称和形成集群的第一个节点的完全限定域名 (FQDN) 组合而成。
可以通过以下方式更改:
rabbitmqctl set_cluster_name
命令或通过管理 UI 进行设置。
如果你的 DNS 无法为机器提供唯一名称,则务必显式指定此名称。
以下是一个示例:
rabbitmqctl set_cluster_name "east1-production"