Ubuntu环境下的 RabbitMQ 安装与配置详细教程


目录

1.前言

插播一条消息~

2.正文

2.1介绍RabbitMQ

2.2正式安装

2.2.1安装Erlang

2.2.2安装RabbitMQ

2.2.3安装RabbitMQ管理界面

2.2.4启动服务并访问

2.2.4.1启动服务

2.2.4.2通过IP:port访问界面

2.2.4.3添加管理员用户并登录

3.小结


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.小结

今天的分享到这里就结束了,喜欢的小伙伴点点赞点点关注,你的支持就是对我最大的鼓励,大家加油!

相关推荐
小蒜学长4 小时前
校园外卖点餐系统(代码+数据库+LW)
java·数据库·spring boot·后端
IT_陈寒5 小时前
SpringBoot 3.2 踩坑实录:这5个‘自动配置’的坑,让我加班到凌晨三点!
前端·人工智能·后端
绝无仅有5 小时前
系统面试设计架构的深度解析:方法论、宏观与微观分析
后端·面试·github
期待のcode5 小时前
SpringMVC的请求接收与结果响应
java·后端·spring·mvc
风象南5 小时前
SpringBoot 「热补丁加载器」:线上紧急 bug 临时修复方案
后端
Victor3565 小时前
Redis(43)Redis哨兵(Sentinel)是什么?
后端
Victor3566 小时前
Redis(42)Redis集群如何处理键的迁移?
后端
程序员爱钓鱼8 小时前
Go语言实战案例- Redis实现简单排行榜
后端·google·go