
目录
1.前言
在分布式系统架构中,消息队列作为实现异步通信、服务解耦与流量削峰的关键组件,其选型直接影响系统的可靠性与扩展性。RabbitMQ 作为一款开源消息代理软件,凭借其轻量级架构、高可用性设计及灵活的路由策略,已成为解决分布式场景下通信难题的优选方案。它能够有效隔离服务依赖,通过异步处理机制提升系统吞吐量,尤其在微服务架构中展现出显著优势。
核心价值亮点
- 多协议支持:原生兼容 AMQP 0-9-1、STOMP 等主流消息协议,可无缝对接多样化客户端环境
- 场景适应性:广泛应用于电商订单异步处理(如支付结果通知、库存扣减)、分布式日志收集(多节点日志聚合)、实时数据管道等关键业务场景
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
插播一条消息~
🔍十年经验淬炼 · 系统化AI学习平台推荐
系统化学习AI平台https://www.captainbed.cn/scy/
- 📚 **完整知识体系:**从数学基础 → 工业级项目(人脸识别/自动驾驶/GANs),内容由浅入深
- 💻 **实战为王:**每小节配套可运行代码案例(提供完整源码)
- 🎯**零基础友好:**用生活案例讲解算法,无需担心数学/编程基础
🚀 特别适合
- 想系统补强AI知识的开发者
- 转型人工智能领域的从业者
- 需要项目经验的学生
2.正文
2.1介绍RabbitMQ
RabbitMQ是一款基于高级消息队列协议(AMQP)的开源消息代理软件,也常被称为面向消息的中间件,其核心功能是作为应用程序间的通信中介,实现分布式系统中可靠且高效的异步消息传递.作为部署最广泛的开源消息代理之一,RabbitMQ支持多种消息协议(如AMQP、MQTT、STOMP等),提供灵活的队列路由、交付确认机制和多种交换类型,能够满足分布式系统的异步处理、负载均衡与组件集成需求。其服务器端基于Erlang编程语言开发,依托Open Telecom Platform框架实现集群和故障转移能力,可部署于分布式环境及云平台,并为所有主要编程语言提供客户端库支持。

核心概念解析
RabbitMQ的消息传递模型基于以下关键组件构建,各组件协同实现消息的可靠路由与处理:
- 生产者(Producer):消息的发送方,负责将业务数据封装为消息并发送至RabbitMQ服务器。
- 消费者(Consumer):消息的接收方,持续监听队列并处理接收到的消息,实现业务逻辑的异步执行。
- 交换机(Exchange):消息进入RabbitMQ后的第一站,根据预设的路由规则(如路由键、交换机类型)将消息分发至一个或多个队列。
- 队列(Queue):消息的存储容器,按照FIFO(先进先出)原则暂存消息,直至被消费者取出处理,队列是RabbitMQ中消息的最终落脚点。
- 绑定(Binding):定义交换机与队列之间的关联规则,包含路由键(Routing Key)等参数,决定交换机如何将消息路由至绑定的队列。
核心特性总结:RabbitMQ凭借跨平台兼容性、多协议支持(AMQP/MQTT/STOMP)、分布式部署能力及丰富的消息模式(点对点、发布/订阅、请求/回复等),成为构建高可用、可扩展分布式系统的关键中间件。其基于Erlang的架构天然支持高并发与故障转移,适用于从电子商务交易处理到社交媒体数据流等多样化场景。
2.2正式安装
2.2.1安装Erlang
RabbitMQ作为基于Erlang语言开发的消息队列系统,所以说需要提前安装erlang。以下是详细的安装流程:
版本兼容性要求
不同版本的RabbitMQ对Erlang存在严格的版本依赖,版本不匹配将导致服务启动失败。根据官方规范:
- RabbitMQ 4.0.x 要求最低Erlang 26,最高支持27.2.x版本7;
- RabbitMQ 3.13.x 需Erlang 26及以上,最高支持26.2.x8;
- RabbitMQ 3.12.x 要求Erlang 25及以上,最高支持26.1.x9。
安装前需确认目标RabbitMQ版本对应的Erlang版本范围,建议选择官方推荐的最新兼容版本以获得最佳稳定性。
更新软件包:
bash
sudo apt-get update
安装erlang:
bash
sudo apt-get install erlang
查看erlang版本:
bash
erl

退出命令:
bash
halt().
2.2.2安装RabbitMQ
在已完成Erlang环境配置的基础上,开始安装RabbitMQ。
更新软件包:
bash
sudo apt-get update
安装rabbitMQ:
bash
sudo apt-get install rabbitmq-server
确认安装结果:
bash
systemctl status rabbitmq-server

2.2.3安装RabbitMQ管理界面
默认安装是不安装管理界面的,RabbitMQ管理界面是其核心扩展功能,通过插件机制提供Web-based管理UI,可实现队列监控、用户管理、策略配置等关键运维操作。具体操作如下:
bash
rabbitmq-plugins enable rabbitmq_management
2.2.4启动服务并访问
2.2.4.1启动服务
RabbitMQ 服务在 Ubuntu 24.04 系统中通过 systemd 系统服务管理器进行管理,需通过专用命令完成启动、开机自启配置及运行状态验证。以下为关键操作流程及说明:
bash
sudo service rabbitmq-server start
该操作会加载 RabbitMQ 核心组件及默认配置,适用于首次安装后或服务停止后的手动激活场景1。
为避免服务器重启后需手动启动服务,需配置开机自启,通过以下命令将服务注册至系统启动项:
sudo systemctl enable rabbitmq-server
此配置会在系统初始化阶段自动加载 RabbitMQ 服务,确保服务持久性可用。部分安装源指出,RabbitMQ 可能默认已配置开机自启,建议执行该命令进行显式确认。
2.2.4.2通过IP:port访问界面
在浏览器中输入以下 URL 并提供相应的用户名和密码:
bash
http://your_server_ip:15672/
默认用户名和密码都是guest。用云服务器配置需要注意,要去云服务器的控制台,找到安全组 在里面开放对应的端口。
生产环境安全警示 :绝对禁止将授权对象设置为 0.0.0.0/0
(开放所有 IP 访问)。应通过 IP 白名单 限制仅允许管理员或应用服务器的 IP 段访问,例如企业内网 IP 段(如 10.0.0.0/8)或特定办公网络 IP,以降低未授权访问风险。
2.2.4.3添加管理员用户并登录
RabbitMQ 默认创建的 guest
用户存在登录限制,仅允许通过本地(localhost
)访问,无法满足远程管理需求。为实现安全的远程访问,需创建自定义管理员用户并配置完整权限,具体步骤如下:
创建管理员用户
使用 rabbitmqctl add_user
命令创建用户,语法为 rabbitmqctl add_user <用户名> <密码>
。以创建用户名为 admin
、密码为 admin
的管理员为例:
bash
rabbitmqctl add_user admin admin
给用户添加权限
通过 set_user_tags
命令为用户分配 administrator
角色,赋予其最高管理权限:
bash
rabbitmqctl set_user_tags admin administrator
该操作确保用户具备管理 RabbitMQ 集群、虚拟主机、用户及权限的全部功能。
RabbitMQ 中的六种主要角色及其功能
1.guest:
- 描述:默认创建的角色,通常用于测试或临时用途。
- 权限:只读权限,可以查看队列、交换机等信息,但不能进行修改或删除操作。
- 用途:主要用于测试环境或临时用户,确保不会对生产环境造成影响。
2.user:
- 描述:一个典型的用户角色,具有更多的权限。
- 权限:可以创建和删除队列、交换机、绑定等,也可以发送和接收消息。
- 用途:适用于开发和测试环境中的普通用户,能够进行大部分的配置和操作。
3.administrator:
- 描述:拥有最高权限的角色。
- 权限:可以执行所有操作,包括创建和删除队列、交换机、绑定,以及管理其他用户和角色。
- 用途:适用于管理员或需要完全控制 RabbitMQ 集群的用户。
4.monitor:
- 描述:一个特殊的用户角色,主要用于监控和审计。
- 权限:可以查看队列、交换机、绑定等信息,但不能进行修改或删除操作。
- 用途:适用于需要监控 RabbitMQ 系统状态的用户,例如运维人员,他们需要查看系统的运行情况但不需要进行任何修改。
5.manager:
- 描述:一个特殊的用户角色,主要用于管理队列和交换机。
- 权限:可以创建和删除队列、交换机、绑定,但不能进行其他高级操作。
- 用途:适用于需要管理和配置队列和交换机的用户,例如开发人员或运维人员。
6.developer :
- 描述:一个特殊的用户角色,主要用于开发和测试。
- 权限:可以创建和删除队列、交换机、绑定,也可以发送和接收消息。
- 用途 :适用于开发人员,他们需要在开发过程中进行各种操作,包括创建和删除 资源。
通过admin访问

随后通过浏览器访问 RabbitMQ 管理界面(默认地址 http://服务器IP:15672
),使用创建的 admin
用户及密码登录,验证节点状态、连接数及队列指标是否正常。
3.小结
今天的分享到这里就结束了,喜欢的小伙伴点点赞点点关注,你的支持就是对我最大的鼓励,大家加油!