跳至主内容
版本:4.3

联邦参考

概述

本指南提供了在定义与联邦 (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-upstreamfederation-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

在任意给定时间内,链路上待确认的最大投递消息数。默认值为 1000。增加此值可以在一定程度上提高链路吞吐量,但也会导致链路占用更多内存。

reconnect-delay

断开连接后等待重新连接代理的时间(以秒为单位)。默认值为 1。

ack-mode

确定链路应如何确认消息。如果设置为 on-confirm(默认值),消息在下游确认后,才会向上游代理发送确认。这可以处理网络错误和代理故障而不丢失消息,是速度最慢的选项。

如果设置为 on-publish,消息在投递到下游后即向上游代理确认。在发生网络或代理故障时,可能会导致消息丢失。

如果设置为 no-ack,则不使用消息确认。这是最快的选项,但在发生网络或代理故障时可能会丢失消息。

trust-user-id

确定联邦应如何与已验证用户 ID (validated user-id) 功能交互。如果设置为 true,联邦将从上游传递任何已验证的用户 ID,即使它自身无法验证该 ID。如果设置为 false 或未设置,它将清除所遇到的任何已验证用户 ID。仅当你信任上游服务器(及其所有上游服务器)不会伪造用户 ID 时,才应将其设置为 true

仅适用于联邦交换机

以下上游参数仅适用于联邦交换机

参数名称描述
exchange

上游交换机的名称。默认使用与联邦交换机相同的名称。

max-hops

消息发布到联邦交换机后,在被丢弃前允许经过的最大联邦链路数。默认值为 1。请注意,即使 max-hops 设置为大于 1 的值,由于循环传输,消息也不会两次经过同一个节点。但是,如果消息可能通过多条路由从源头到达目的地,则消息仍可能被重复。

queue-type

交换机联邦所使用的内部上游队列的队列类型。

默认为 classic(单副本队列类型)。设置为 quorum 以使用复制队列类型

默认情况下,更改队列类型将删除并重新创建上游队列。这可能导致在重新声明期间消息丢失或无法路由。为避免这种情况,请将 resource-cleanup-mode 键设置为 never。这需要手动删除旧的上游队列,以便用新类型重新创建。

可用版本:3.13.1

resource-cleanup-mode

当联邦链路停止时,是否删除内部上游队列

默认情况下,当联邦链路停止时,内部上游队列会立即被删除。设置为 never 可保留上游队列,即使在更改联邦配置时也能收集消息。

expires

如果与上游的连接中断,联邦交换机的上游队列在多长时间(毫秒)后可以被删除。默认值为 'none',表示不会对队列应用过期设置。

此设置控制在连接丢失时,上游队列在被标记为可删除前能存活多久。

此值控制上游队列的 TTL 设置

message-ttl

联邦交换机上游队列中消息的过期时间(以毫秒为单位,参考 expires)。默认值为 'none',表示消息永不过期。此设置不适用于联邦队列。

此值控制上游队列中消息的 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"
© . This site is unofficial and not affiliated with VMware.