目录
- 前言
- 1.安装docker
- 2.防火墙开放端口
- [3. docker部署](#3. docker部署)
- [4.访问 Web 控制台界面](#4.访问 Web 控制台界面)
- 5.详解RabbitMQ控制台
-
- [Web 管理界面概览](#Web 管理界面概览)
- 用户与权限规则
- [虚拟主机 (vhost) 逻辑隔离](#虚拟主机 (vhost) 逻辑隔离)
- 交换机(Exchanges)和队列(Queues)
前言
这篇博客讲述如何在centos7系统上安装、配置目前业内使用最广泛的消息中间件RabbitMQ,以及web控制台的基本操作,这篇博客是通过docker进行安装部署的,对docker不熟悉的朋友可以参考我的这篇博客docker详解。
1.安装docker
如果你的系统还没有安装 Docker,需要先安装docker,centos系统直接通过yum工具安装即可,可以通过以下命令安装并启动 Docker
bash
sudo yum update -y # 更新系统包
sudo yum install -y docker # 安装 Docker
sudo systemctl start docker # 启动 Docker 服务
sudo systemctl enable docker # 设置 Docker 开机自启
2.防火墙开放端口
RabbitMQ有两个重要的访问端口,web控制台服务和消息收发服务,一定要确保防火墙开放了这两个端口,(注意默认端口占用的情况)
bash
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent # AMQP 协议端口
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent # 管理界面 Web 端口
sudo firewall-cmd --reload # 重新加载防火墙配置
3. docker部署
-
拉取 RabbitMQ 镜像
我们要拉取包含 Web 控制台界面的 management版本镜像,这样可以通过浏览器方便地管理 RabbitMQ。
bash# 拉取当前官方认定的最新稳定版本,且该版本已预装了 RabbitMQ 的控制台插件 sudo docker pull rabbitmq:management # 如果需要拉取特定版本的带控制台插件的 RabbitMQ 镜像,需要指定具体版本号 sudo docker pull rabbitmq:3.12.0-management
-
配置数据卷,创建数据持久化目录
为了防止容器删除或重启时数据丢失,我们要将 RabbitMQ 的数据目录挂载到宿主机上。这个目录是用来持久化RabbitMQ 的交换机、队列、消息等数据。
bash# 这个目录用于映射容器内的 /var/lib/rabbitmq目录 sudo mkdir -p /usr/local/rabbitmq/data # 或者其他你喜欢的路径
-
运行 RabbitMQ 容器
使用 docker run命令启动 RabbitMQ 容器
bashsudo docker run -d \ --name rabbitmq \ -p 5672:5672 \ # 映射 AMQP 协议端口 -p 15672:15672 \ # 映射管理界面 Web 端口 -v /usr/local/rabbitmq/data:/var/lib/rabbitmq \ # 挂载数据卷用于持久化 -e RABBITMQ_DEFAULT_USER=admin \ # 设置默认用户名 -e RABBITMQ_DEFAULT_PASS=admin123 \ # 设置默认用户密码 --restart=unless-stopped \ # 容器异常退出时自动重启(可选) rabbitmq:management
-
查看容器状态和日志
运行状态为up, 启动日志中没有error信息,就说明部署成功
bashsudo docker ps sudo docker logs -f rabbitmq
4.访问 Web 控制台界面
- 打开浏览器,访问 http://<你的CentOS服务器IP地址>:15672。
- 使用你在 docker run命令中通过环境变量设置的用户名(admin)和密码(admin123)登录。如果能看到 RabbitMQ 的管理后台,说明安装成功
5.详解RabbitMQ控制台
Web 管理界面概览
登陆成功后,我们会看到上面几个重要的选项,这些选项组成了RabbitMQ 的核心操作和功能。
选项 | 核心功能 |
---|---|
Overview (概览) | 监控全局消息堆积数(Ready, Unacked, Total)、消息流转速率、连接/信道/队列/消费者总数,以及节点资源状态(内存、磁盘) |
Connections (连接) | 查看所有生产者和消费者的 TCP 连接状态(运行中 running 或空闲 idle)、客户端地址等 |
Channels (信道) | 监控基于连接创建的轻量级信道详情,如未确认消息数 (Unacked)、预取数 (Prefetch) 和消息处理速率 |
Exchanges (交换机) | 管理所有交换机,查看其类型(direct, fanout, topic, headers)、绑定和消息路由速率 |
Queues (队列) | 核心监控区。查看各队列的消息数(Ready, Unacked)、状态、消费者数量,并可进行发布消息、清空队列等操作 |
Admin (管理) | 集中管理用户、虚拟主机 (vhost)、策略 (Policies) 和权限 |
用户与权限规则
-
在Admin选项中我们可以创建用户信息,包括用户、密码、角色标签 。用户创建在RabbitMQ中是一个非常重要的操作,因为rabbitMQ基于多租户隔离 机制,一般情况下,用户会创建或者归属于 某一个或者多个虚拟主机(vhost) ,而虚拟主机(vhost)拥有自己完全独立的交换机、队列、绑定和权限体系。因此,客户端与RabbitMQ建立连接时,需要指定用户、虚拟主机信息,才能访问目标交换机和队列
-
在 Admin > Users 中管理用户,其权限由 角色标签 (Tags) 决定,从高到低如下
角色 | 权限说明 |
---|---|
administrator | 最高权限,可管理用户、vhost、策略、插件等一切事务。 |
monitoring | 可查看所有连接、信道、节点状态等监控信息,但不能修改配置 |
policymaker | 可在其有权限的 vhost 内管理策略和参数 |
management | 普通管理者,可管理其有权限的 vhost 内的资源(队列、交换机等 |
none | 无管理权限,通常是普通的生产或消费用户 |
虚拟主机 (vhost) 逻辑隔离
-
我们可以在Admin选项中方便创建当前用户的虚拟主机,然后在当前虚拟主机上创建交换机和队列
-
虚拟主机 (vhost) 是 RabbitMQ 中实现逻辑隔离和多租户支持的核心机制,作用类似于pg或者mysql数据库中的schema和database,每个虚拟主机vhost相当于一个独立的迷你 RabbitMQ 服务器**,拥有自己完全独立的交换机、队列、绑定和权限体系**。不同 vhost 下的资源互不可见,即使同名也互不干扰。
-
默认vhost:安装后存在一个名为 / 的默认虚拟主机vhost。
-
总结一下,虚拟主机 (vhost) 主要是用于隔离不同环境(如 /dev, /test, /prod)或不同项目/团队,客户端连接时必须指定要访问的 vhost
交换机(Exchanges)和队列(Queues)
- 交换机和队列是消息中间件最重要的两个概念,一般实际开发中,交换机负责将消息路由到指定队列,然后队列将消息发送到监听的消费者客户端。
- 我们在Exchanges选项可以方便的创建交换机,创建或管理交换机时需特别关注:
- 类型:决定了消息路由到队列的规则
类型 | 规则 |
---|---|
Direct | 定向路由,精确匹配 Routing Key |
Fanout | 广播到所有绑定队列 |
Topic | 主题路由, 使用通配符 (*, #) 匹配 Routing Key |
Headers | 基于消息头 (Headers) 键值对匹配 |
- 特性:可设置为 持久化 (Durable),以在 Broker 重启后依然存在
- 在队列( Queues) 选项卡中,队列的行为和特性可通过多种参数精细控制,包括持久化、自动删除、队列长度限制、死信交换机等等,可以在创建队列时进行配置。