RabbitMQ 教程

Federation 安装

为了能够使用 Federation 功能,需要配置以下两个内容:

(1)需要配置一个或多个 upstream,每个 upstream 均定义了到其他节点的 Federation link(链接)。这个配置可以通过设置运行时的参数(Runtime Parameter)来完成,也可以通过 federation management 插件来完成。

(2)需要定义匹配交换器或者队列的一种/多种策略(Policy)。

Federation 插件默认已在 RabbitMQ 发布包中,执行 rabbitmq-plugins enable rabbitmq_federation 命令可以开启 Federation 功能。

示例

使用 rabbitmq-plugins enable 命令开启 rabbitmq_federation 插件,如下:

[root@hxstrive ~]# rabbitmq-plugins enable rabbitmq_federation
Enabling plugins on node rabbit@hxstrive:
rabbitmq_federation
The following plugins have been configured:
  rabbitmq_federation
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@hxstrive...
The following plugins have been enabled:
  rabbitmq_federation

set 4 plugins.
Offline change; changes will take effect at broker restart.

由前面可知,Federation 内部基于 AMQP 协议拉取数据,所以在开启 rabbitmq_federation 插件的时候,默认会开启 amqp_client 插件。

同时,如果要开启 Federation 的管理插件,需要执行 rabbitmq-plugins enable rabbitmq_federation _management 命令,示例如下:

[root@hxstrive ~]# rabbitmq-plugins enable rabbitmq_federation_management
Enabling plugins on node rabbit@hxstrive:
rabbitmq_federation_management
The following plugins have been configured:
  rabbitmq_federation
  rabbitmq_federation_management
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@hxstrive...
The following plugins have been enabled:
  rabbitmq_federation_management

set 5 plugins.
Offline change; changes will take effect at broker restart.

开启 rabbitmq_federation_management 插件之后,在 RabbitMQ 管理界面中“Admin”的右侧会多出“Federation Status” 和 “Federation Upstreams”两个 Tab 页,如下图:

rabbitmq_federation_manageme 插件依赖 rabbitmq_management 插件,所以开启 rabbitmq_federation_management 插件的同时默认也会开启 rabbitmq_management 插件。

注意:当需要在集群中使用 Federation 功能的时候,集群中所有的节点都应该开启 Federation 插件.

RabbitMQ 中有关 Feduration 插件的 Federation upstream 信息全部都保存在 RabbitMQ Mnesia 数据库中,包括用户信息、权限信息、队列信息等。在 Federation 中存在 3 种级别的配置。

(1)Upstreams:每个 upstream 用于定义与其他 Broker 建立连接的信息。

(2)Upstream sets:每个 upstream set 用于对一系列使用 Federation 功能的 upstream 行分组。

(3)Policies:每一个 Policy 会选定出一组交换器,或者队列,亦或者两者皆有而进行限定,进而作用于一个单独的 upsteam 或者 upstream set 之上。

实际上,在简单使用场景下,基本上可以忽略 upstream set 的存在,因为存在一种名为 “all” 并且隐式定义的 upstream set,所有的 upstream 都会添加到这个 set 之中。Upstreams 和 Upstream sets 都属于运行时参数,就像交换器和队列一样,每个 vhost 都持有不同的参数和策略的集合。

Federation 相关的运行时参数和策略都可以通过下面 3 种方式进行设置:

(1)通过 rabbitmqctl 工具

(2)通过 RabbitMQ Management 插件提供的 HTTP API 接口

(3)通过 rabbitmq federation management 插件提供的 Web 管理界面的方式。不过基于 Web 管理界面的方式不能提供全部功能,比如无法针对 upstream set 行管理(推荐方式)。

在后续章节中,将分别介绍怎样通过上面三种方式创建 Federation upstream。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号