使用 Federation 插件 将数据从一个 RabbitMQ 集群转发到另一个 RabbitMQ 集群时,配置相对简单,且只需要在源集群中的一个节点上启用和配置 Federation 即可。Federation 会自动处理集群内部的消息路由和复制,无需在每个节点上都启用。
配置步骤
1. 在源集群中启用 Federation 插件
只需要在源集群中的一个节点上启用 Federation 插件,其他节点会自动同步插件状态。
rabbitmq-plugins enable rabbitmq_federation rabbitmq-plugins enable rabbitmq_federation_management
2. 配置 Federation Upstream
在源集群中的任意一个节点上配置 Federation Upstream,指向目标集群的地址。
- 进入 RabbitMQ 管理界面(通常在
http://<rabbitmq-host>:15672
)。 - 导航到 Admin > Federation Upstreams。
- 添加一个新的 Upstream,配置目标集群的地址。目标集群的地址可以是目标集群中的任意一个节点。
例如:
{ "uri": "amqp://target-cluster-node1", "prefetch-count": 100 }
如果需要高可用性,可以配置多个目标节点:
{ "uri": [ "amqp://target-cluster-node1", "amqp://target-cluster-node2", "amqp://target-cluster-node3" ], "prefetch-count": 100 }
3. 创建 Federation Policy
在源集群中的任意一个节点上创建策略,指定需要被 Federation 的队列或交换器。
- 进入 Admin > Policies。
- 添加一个新策略,例如:json复制{ "pattern": "^federated\.", "definition": { "federation-upstream": "upstream-name" }, "apply-to": "queues" }这将把所有以
federated.
开头的队列转发到目标集群。
4. 验证
在目标集群中检查是否接收到来自源集群的消息。
是否需要同时在两个集群中启用 Federation?
- 源集群:需要在源集群中启用 Federation 插件,并配置 Upstream 和 Policy。
- 目标集群:不需要启用 Federation 插件。目标集群只需要正常接收消息即可。