当我们有多个rabbitmq集群的时候,如果想要单向的同步集群的消息,也就是说把新集群当作老集群的镜像集群,实时的同步老集群的消息,在老集群消息被消费的时候不会影响同步到新集群的消息。在外部看上去就像每次写入消息的时候,同时向新老两个集群写入一样,不论mq的跨版本,不论mq的用户。一般我们会将这种情况应用于存在两个不同的系统,但是老数据来源只能向一个队列写入数据,此时为了在新系统上也可以实时同步到老系统队列中的数据的时候。

Federation介绍

特点

松耦合性(Loose coupling)

WAN 友好性(WAN-friendly)

扩展性(Scalability)

federation能做什么?

配置的种类

身份验证

操作步骤说明

1. 在集群的每一个node开启federation插件(同步和被同步集群都需要)

2. 登录到同步集群的管理界面::http://x.x.x.:15672/#/

3. 创建upstream

4. 创建policy

5. 查看状态图

6. 查看连接

高级

参考

Federation介绍

federation 插件的最终目标是,在不同 broker 之间进行消息传递而无需建立集群;该功能在很多场景下非常有用:

注意:当你在一个cluster中使用federation插件,所有在集群中 的nodes都需要安装federation插件

特点

松耦合性(Loose coupling)

federation 插件能够在分属不同管理域的 broker 或 cluster 之间传递消息:

他们可能设置了不同的 user 和 vhost ;

他们可能运行在不同版本的 RabbitMQ 和 Erlang 上; WAN 友好性(WAN-friendly) federation 插件基于 AMQP 0-9-1 协议在不同 broker 之间进行通信,并设计成能够容忍不稳定的网络连通情况; 扩展性(Scalability) federation 不需要在 n 个 broker 之间建立 O(n^2) 个连接(尽管这是最简单的使用模式),这也就意味着 federation 在使用时更容易扩展 federation能做什么? federation 插件允许你将多个 exchange 或多个 queue 进行 federate ;federated exchange 或 federated queue 能够从一个或多个 upstream 接收到消息;

也就是说,你的队列可以和其他集群的队列建立一种关系,他们之间可以相互的同步数据,可以是我同步给你,也可以是你同步给我,不过这种关系有两个角色一个是上游一个是下游,数据流向是上游流向下流。 这里有三个名词,federation 插件允许你将多个 exchange 或多个 queue 进行 federate:

upstream: 上游,是指位于其他 broker 上的、远端 exchange 和 queue ; federated exchange: 到exchange的关系,能够将发给 upstream 的消息路由到本地的某个 queue 中; federated queue: 到queue的关系,则允许一个本地消费者接收到来自 upstream queue 的消息; 配置的种类 关于 federation upstream 的信息全都保存在 RabbitMQ 的数据库中,其中包括了 user 信息、permission 信息、queue 信息等等; 在 federation 中存在 3 种界别的配置:

Upstreams - 每一个 upstream 用于定义如何与另外的 broker 建立连接; Upstream sets - 每一个 upstream set 用于针对一系列使用 federation 功能 upstream 进行了分组; Policies - 每一种 policy 会限定(过滤)出一组 exchange ,或者一组 queue ,或者同时针对两者进行限定;policy 最终将作用于一个单独的 upstream 上,或者一个 upstream set 上,并对其他对象发挥作用; 实际上,在最简单的使用情况下,你可以忽略已经存在的upstream设置,因为有一个隐含的默认upstream叫做“all”,他会添加所有的upstream。

身份验证 我们讨论的是免身份验证的方式,如果有身份难的需求请参考官网:Authentication Mechanisms — RabbitMQ

操作步骤说明 parameter 和 policy 可以通过 3 种方式进行设置:

- 通过 rabbitmqctl 脚本;

- 通过 management 插件提供的 HTTP API ;

- 通过 rabbitmq_federation_management 插件提供的 Web UI(更通用的方式,我们也是通过页面来配置就可以了);

注意:基于 Web UI 的方式不能提供全部功能,尤其无法针对 upstream set 进行管理;

1. 在集群的每一个node开启federation插件(同步和被同步集群都需要) 参考命令:

- rabbitmq-plugins enable rabbitmq_federation

- rabbitmq-plugins enable rabbitmq_federation_management

2. 登录到同步集群的管理界面::http://x.x.x.:15672/#/

3. 创建upstream tips:

UI操作:

Admin->Federation Upstreams->Add a new upstream

Name:随意填写

URI:填被同步集群(例如:amqp://user1:xxx@x.x.x.x,xxx为连接密码)

Expires:默认填写3600000 单位ms

其余字段可不用填写

Expires:是代表缓存时间,如果说网络连通性不好的时候,消息会在上游的队列中缓存的时间,超时丢弃,设置为空则表示,永远缓存不会丢弃数据(但是如果长时候不恢复内存会占用越来越大,建议设置上)

Acknowledgement Mode: 代表消息确认方式,用来防止消息在传输过程中丢失,有三个值,on-confirm、on-publish、no-ack,对传输速度的影响是从慢速到快速,对安全性是不会丢失到可能会丢失。通常使用on-publish,不然on-confirm太慢了。

4. 创建policy tips:在下游,也就是新队列(被同步队列)上操作

UI操作:

Admin->Policies->Add / update a policy

Name:随意填写(sync_data)

Pattern:匹配表达式(例如:^(?!amq.).* 剔除系统队列后的所有队列)

Apply to: 默认选择Exchange and queues

Definition:federation-upstream-set = all (选定federation规则)

5. 查看状态图 现在,所有内置的 exchange 都应该建立了 federation ,因为他们都能匹配上面的 policy,可以通过页面查看状态

UI操作:

Admin > Federation Status > Running Links

查看针对每个 exchange 的 federation 连接。

配置成功可以看到匹配的Exchange / Queue, state:running

也可以通过下面的命令查看状态图:

rabbitmqctl eval 'rabbit_federation_status:status().'

也可以通过 management 插件中的 exchange 列表,或者下面的命令输出,确认上述 policy 已经作用到了 exchange 上;

rabbitmqctl list_exchanges name policy | grep federate-me

通常情况下,针对每个 upstream 都会有一条 federation 连接,该 federation 连接对应到一个 exchange 上;例如 3 个 exchange 与 2 个 upstream 分别建立 federation 的情况下,会有 6 条连接。

6. 查看连接 登录到被同步集群(上游)的管理界面::http://x.x.x.:15672/#/ 前往 Connections选项 配置成功可以看到来自同步集群的连接

高级

更复杂的配置:Federation Reference — RabbitMQ

Rabbitmq之Federation配置相关推荐

  1. RabbitMQ——RabbitMQ的Federation 和 Shovel原理

    摘要 主要讲述Federation和 Shovel这两个插件的使用.细节及相关原理.相对于集群的部署方式,Federation和Shovel可以部署在广域网中,为RabbitMQ提供更广泛的应用空间. ...

  2. Mq安装服务器文件传输,RabbitMQ学习:安装RabbitMQ及RabbitMQ的初步配置(一)

    RabbitMQ基础含义 RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息.服务端将要发送的消息放入到队列池中.接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息.Rabb ...

  3. RabbitMQ快速安装配置指南

    RabbitMQ快速安装配置指南 官网的安装教程由于需要解释原理很多废话,这里总结一下在CentOS7环境下的安装配置过程.如需理解原理,请看官网原文的安装指南或翻译 1. 安装RabbitMQ se ...

  4. RabbitMQ之Shovel配置(python模拟Producer、Consumer)

    一.Shovel Shovel能够可靠.持续地从一个Broker中的队列(source端)拉取数据并转发至另一个Broker(destination).这个过程中Shovel就是一个客户端,它负责连接 ...

  5. rabbitMQ插件shovel配置(数据同步)

    扣扣技术分享交流群:1125844267 一.shovel是什么? 其实,shovel和上一篇博客中的federation的功能是类似的,都是为了MQ间的消息同步.不同的是,federation需要每 ...

  6. RabbitMQ的Federation和Shovel的使用

    一.跨越集群的界限 RabbitMQ可以通过3种方式实现分布式部署:集群.Federation.Shovel.Federation和Shovel可以为RabbitMQ的分布式部署提供更高的灵活性,但也 ...

  7. Win10 下 RabbitMQ 的 安装 配置

    记录下本人在win10环境下安装RabbitMQ的步骤,以作备忘. 第一步:下载并安装erlang 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安 ...

  8. rabbitmq安装与配置(windows)亲测有效!!!

    第一步安装erlang环境 国内下载地址:https://erl.uip6.com/ 下载最新的 然后 傻瓜式安装 一直点Next 第二部安装rabbitmq 这个需要官网下:https://www. ...

  9. RabbitMQ学习系列(二): RabbitMQ安装与配置

    1.安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang. erlang:http://www.erlang.org/download. ...

最新文章

  1. linux吃鸡游戏下载,沙雕糖豆人吃鸡战场
  2. linux nfs 读写性能,linux – Debian上的NFS性能问题
  3. IIS网站打不开错误解决方案集锦(一):编译器错误消息: 编译器失败,错误代码为 -1073741502。...
  4. DELL XPS 9350 无线网卡DW1820A WIN7驱动异常解决
  5. idea 搜索不到gsonformat_Idea中GsonFormat插件安装
  6. 华为云的“大招”——Euler开源 Gauss开放 旨在建立云生态
  7. WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客
  8. 问题八:C++中this是干嘛用的
  9. Android 测试入门之---Monkey test
  10. 华为od与中软外包哪个更好_真惨!入职中软一个月(外包华为)就离职了~
  11. Android:layout_weight详解
  12. 【解析无线路由器信号消失原因】
  13. 五、传输层(三)TCP
  14. PDF文件如何编辑?这两种方法是我一直在用的
  15. Scrum: 时间框 (Timeboxing) 是什么?
  16. 2.Elasticsearch-增删改
  17. 宏录制流程——例:生成工资条
  18. js 通过传入 开始时间和结束时间 算出相差多少秒 分钟 相差时间
  19. LeetCode-1264. 页面推荐(中等)
  20. python 爬取当当网商品价格并写入数据库

热门文章

  1. 智慧停车将再次迎来发展的春天
  2. 计算机关机慢什么原因,电脑关机慢是什么原因,小编教你电脑关机慢是什么原因...
  3. chmod + 数字 的含义
  4. 2014年中国市场智能手机销量排行榜,前十国外品牌只剩两
  5. html5游戏透视,透视世界(Perspective)
  6. 【泡泡一分钟】间歇的GPS辅助VIO:在线初始化和标定
  7. linux系统基础命令使用,linux基础命令(linux必学的60个命令)
  8. python psycopg2使用_psycopg2 (python与postgresql)
  9. 分支-13. 计算天数(15)
  10. 自制电吉他效果器 DIY PCB(四)原理图与封装 下