一、Federation介绍
federation 插件的最终目标是,在不同 broker 之间进行消息传递而无需建立集群
二、Federation特点
1、松耦合性(Loose coupling)
- federation 插件能够在分属不同管理域的 broker 或 cluster 之间传递消息:
- 他们可能设置了不同的 user 和 vhost ;
- 他们可能运行在不同版本的 RabbitMQ 和 Erlang 上;
2、WAN 友好性(WAN-friendly)
- federation 插件基于 AMQP 0-9-1 协议在不同 broker 之间进行通信,并设计成能够容忍不稳定的网络连通情况;
3、扩展性(Scalability)
- federation 不需要在 n 个 broker 之间建立 O(n^2) 个连接(尽管这是最简单的使用模式),这也就意味着 federation 在使用时更容易扩展
三、Federation能做到什么
federation 插件允许将多个 exchange 或多个 queue 进行 federate ;federated exchange 或 federated queue 能够从一个或多个 upstream 接收到消息;
名词释义
- upstream: 上游,是指位于其他 broker 上的、远端 exchange 和 queue ;
- federated exchange: 到exchange的关系,能够将发给 upstream 的消息路由到本地的某个 queue 中;
- federated queue: 到queue的关系,则允许一个本地消费者接收到来自 upstream queue 的消息
四、具体配置
1、每个节点上都要开启federation插件
[root@node02 rabbitmq]# rabbitmq-plugins enable rabbitmq_federation_management
Enabling plugins on node rabbit@node02:
rabbitmq_federation_management
The following plugins have been configured:
rabbitmq_federation
rabbitmq_federation_management
rabbitmq_management
rabbitmq_management_agent
rabbitmq_tracing
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@node02...
The following plugins have been enabled:
rabbitmq_federation
rabbitmq_federation_management
started 2 plugins.
2、登录到Web管理界面
如果未开启web界面插件,需开启。
3、在下游(被同步队列)创建upstream
4、创建policy
5、查看状态图
- 下游
- 上游
感谢机智的程序员小熊
写的博客。
参考文献:https://coding3min.com/451.html