


个人主页:手握风云
目录
[一、RabbitMQ 基础概念](#一、RabbitMQ 基础概念)
[1.1. 定义](#1.1. 定义)
[1.2. AMQP 协议](#1.2. AMQP 协议)
[1.3. MQ 本质](#1.3. MQ 本质)
[1.4. 分布式系统两种通信方式](#1.4. 分布式系统两种通信方式)
[二、MQ 的核心作用与应用场景](#二、MQ 的核心作用与应用场景)
[三、主流 MQ 产品对比](#三、主流 MQ 产品对比)
[3.1. Kafka](#3.1. Kafka)
[3.2. RocketMQ](#3.2. RocketMQ)
[3.3. RabbitMQ](#3.3. RabbitMQ)
[四、RabbitMQ 的安装](#四、RabbitMQ 的安装)
一、RabbitMQ 基础概念
1.1. 定义
Rabbit 是企业名称,MQ 全称Message Queue(消息队列);RabbitMQ是 Rabbit 公司推出、实现了 AMQP 协议的主流消息中间件。
1.2. AMQP 协议
全称高级消息队列协议,是面向消息中间件的通用应用层协议,作用是让不同客户端、消息中间件之间可跨语言自由传递消息,不受开发环境限制。
1.3. MQ 本质
MQ 的底层是 FIFO(先入先出) 的普通队列,队列内存储各类消息(文本、JSON、对象等),核心用途是实现分布式系统之间的通信。
1.4. 分布式系统两种通信方式
- 同步通信:系统之间直接调用接口,数据发出后即时送达目标端。
- 异步通信:数据先存入 MQ 这类临时容器,满足指定条件后,再由容器转发至目标系统。

二、MQ 的核心作用与应用场景
我们可以将 MQ 类比为 "消息仓库",负责消息的存储与转发,主要有四大实用能力:
- 异步解耦:把耗时、无需即时返回结果的业务操作异步化,剥离主流程。比如用户注册成功后,异步发送短信、邮件通知,无需等待通知发送完成再反馈结果。
- 流量削峰:应对秒杀、大促等突发高流量,将请求排队缓冲,系统按自身能力逐步处理,避免突发流量压垮服务,同时无需为峰值流量额外投入大量资源。
- 消息分发:当多个系统需要响应同一份数据时,由 MQ 统一分发消息,替代低效的数据库轮询。比如支付成功后,支付系统向 MQ 发消息,其他业务系统订阅并处理。
- 延迟通知:依托延迟消息功能实现定时任务。比如电商用户下单后,超时未支付则自动取消订单。
三、主流 MQ 产品对比
3.1. Kafka
Kafka 最初专为日志收集、传输设计,特点是极致高吞吐,单机可达十万级,功能精简,如果是日志采集类场景,首选 Kafka。
3.2. RocketMQ
RocketMQ 是阿里开源,后捐赠给 Apache,采用 Java 语言开发,设计时借鉴 Kafka 并做优化,经过多年双十一高并发场景验证,可靠性、稳定性表现突出。但是支持客户端语言较少,社区活跃度一般。适用于互联网金融等高并发、高可靠性要求的场景。
3.3. RabbitMQ
RabbitMQ 采用 Erlang 语言开发,功能完备,兼容几乎所有主流开发语言,自带友好可视化管理界面,吞吐量为万级,社区活跃度高,适用于中小型企业、中低并发、数据量适中的业务场景。
RabbitMQ 在易用性、扩展性、可靠性、高可用性四大方面表现优异,目前已在互联网行业实现大规模落地应用。
四、RabbitMQ 的安装
RabbitMQ 运行强依赖 Erlang 语言环境,安装前必须先部署 Erlang,且两者版本需严格匹配。我们首先查看系统版本。
bash
cat /etc/redhat-release
从 rabbitmq/erlang - Packages · packagecloud 下载对应版本的 Erlang 包,比如 CentOS 7 对应 Erlang 7,CentOS 8 对应 Erlang 8。

bash
wget 对应的 Erlang RPM 包的地址
sudo yum install 对应的 Erlang 版本
输入 erl 确认是否安装成功,输入 halt(). 即可退出,或者简单一点使用 ctrl + c。

接着我们需要从 Erlang Version Requirements | RabbitMQ 确认自己需要安装的 RabbitMQ 的客户端版本。

RabbitMQ 客户端安装:rabbitmq/rabbitmq-server - Packages · packagecloud。
bash
# 导入官方签名密钥
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
sudo yum install RabbitMQ 客户端版本
安装好之后,查看运行状态:
bash
# 启动服务
systemctl start rabbitmq-server
# 开机自启
systemctl enable rabbitmq-server

由于 RabbitMQ 默认是不安装管理界面的,所以我们需要执行插件启用命令:
bash
rabbitmq-plugins enable rabbitmq_management

开启管理面板之后,就可以通过 http://服务器IP:15672 进行访问。
bash
# 创建用户
rabbitmqctl add_user admin admin
RabbitMQ 六大用户角色权限:
| 角色 | 权限说明 |
|---|---|
| Administrator 超级管理员 | 登录控制台、查看所有信息、管理用户 / 策略、查看节点详情 |
| Monitoring 监控者 | 登录控制台、查看节点内存 / 磁盘 / 进程等监控信息,无法管理策略 |
| Policymaker 策略制定者 | 登录控制台、管理策略,无法查看节点信息 |
| Management 普通管理者 | 仅可登录控制台,无节点查看、策略管理权限 |
| Impersonator 模拟者 | 无法登录 Web 管理控制台 |
| None 普通用户 | 仅做生产者 / 消费者,无法登录控制台 |