跳至主要内容
版本:4.0

联邦参考

概述

本指南提供了有关在定义与联邦相关的各种参数时可以设置的所有字段的参考。

请参阅其他与联邦相关的指南以了解相关概念和入门方法。

配置参考

策略

策略可以将上游集(包括名为“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键。有关策略的更多详细信息,请参阅策略文档。

上游

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功能交互。如果设置为true,则联邦将传递来自上游的任何已验证的用户 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

从上游消费时使用的消费者标签。可选。

上游集

每个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,其中包含目标虚拟主机中创建的所有上游。

集群名称

联邦插件使用服务器内定义的集群名称来识别联邦图中的其他节点。默认情况下,它是从 RabbitMQ 节点名称和第一个节点的完全限定域名构建而成。

这可以通过以下方式更改:

rabbitmqctl set_cluster_name

命令或通过管理 UI。

如果您的 DNS 不会为机器提供不同的名称,则明确指定这一点非常重要。

这是一个示例

rabbitmqctl set_cluster_name "east1-production"
© 2024 RabbitMQ. All rights reserved.