RabbitMQ Federation 插件使用
大约 2 分钟
原文地址:http://hscarb.github.io/rabbitmq/20220313-rabbitmq-federation-plugin.html
RabbitMQ Federation 插件使用
概述
RabbitMQ Federation 插件可以将消息从一个 Exchange 复制到另一个 Exchange,或从一个 Queue 分发到另一个 Queue。
复制的源端被称为 upstream,复制的目的端被称为 downstream。要使用 Federation 插件,需要在两个集群都开启 Federation 插件,并且在 downstream 集群创建 Federation,配置 upstream。
使用场景
- 将多个集群的消息收集到一个集群
- 将一个队列的压力分散到多个集群
- 在不下线的情况下将数据从一个集群同步到另一个集群
- 减少消息消费的时延
Federation 种类
可以创建两种类型的 Federation,分别是 Exchange Federation 和 Queue Federation。
Exchange Federation
简单说,它可以实现消息在 Exchange 间的复制(同步)。
使用 Exchange Federation 可以将消息发到其他集群。效果是,当消息发送到被联邦的 Exchange 时,消息会被发送到本地的 Exchange 和 下游的集群。这样,你就可以在不同的集群多次消费消息。
Queue Federation
Queue Federation 的效果是消息的负载均衡,它只会将消息发往有空闲消费者的下游集群。也就是说,消息不会被复制。
常被用于分散压力和集群消息转移。
使用前提
- 两个 RabbitMQ 服务器或集群
- 在两个 RabbitMQ 上开启 Federation 插件
- (可选)为 Federation 的组件单独创建用户
- 上下游 RabbitMQ 网络可以通过 AMQP 协议连接
Federation Exchange 使用
- 满足使用前提
- 在下游节点配置 Federation 的 upstream
- 在下游节点配置 Policy,指定要被 Federate 的 Exchange 或 Queue
upstream 上游集群配置
- 创建 Exchange

- 创建 Queue

- 绑定 Exchange 和 Queue

downstream 下游集群配置
- 配置 upstream

- 创建 Federation policy

- 检查 Federation 状态

测试
- 在上游集群向 Exchange 发送消息

- 在上下游集群的队列都可以收到消息

参考资料
欢迎关注公众号【消息中间件】(middleware-mq),更新消息中间件的源码解析和最新动态!
