一条消息的旅程:RabbitMQ 学习与实践(一)

专栏:RabbitMQ 进阶之路

个人主页:手握风云

目录

[一、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. 分布式系统两种通信方式

  1. 同步通信:系统之间直接调用接口,数据发出后即时送达目标端。
  2. 异步通信:数据先存入 MQ 这类临时容器,满足指定条件后,再由容器转发至目标系统。

二、MQ 的核心作用与应用场景

我们可以将 MQ 类比为 "消息仓库",负责消息的存储与转发,主要有四大实用能力:

  1. 异步解耦:把耗时、无需即时返回结果的业务操作异步化,剥离主流程。比如用户注册成功后,异步发送短信、邮件通知,无需等待通知发送完成再反馈结果。
  2. 流量削峰:应对秒杀、大促等突发高流量,将请求排队缓冲,系统按自身能力逐步处理,避免突发流量压垮服务,同时无需为峰值流量额外投入大量资源。
  3. 消息分发:当多个系统需要响应同一份数据时,由 MQ 统一分发消息,替代低效的数据库轮询。比如支付成功后,支付系统向 MQ 发消息,其他业务系统订阅并处理。
  4. 延迟通知:依托延迟消息功能实现定时任务。比如电商用户下单后,超时未支付则自动取消订单。

三、主流 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 普通用户 仅做生产者 / 消费者,无法登录控制台
相关推荐
Zyangxsir1 小时前
RabbitMQ 核心概念以及Java(Spring Boot)实战用法的整理
java·spring boot·后端·rabbitmq·java-rabbitmq
南部余额17 小时前
RabbitMQ 进阶:延迟队列完全指南
java·分布式·spring·rabbitmq
RH23121119 小时前
2026.6.8Linux
java·数据库·中间件
开开心心_Every1 天前
界面干净的开源免费电视浏览器
人工智能·科技·智能手机·计算机外设·rabbitmq·语音识别·etcd
理人综艺好会2 天前
双Token机制在实际项目中的应用与实践
中间件·token
番茄去哪了2 天前
神领物流面试题(一)
java·大数据·中间件
念何架构之路2 天前
消息中间件
中间件
番茄去哪了2 天前
RabbitMQ
java·rabbitmq·java-rabbitmq
都说名字长不会被发现2 天前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件