Ubuntu环境下的 RabbitMQ 安装与配置详细指南

 更新时间:2025年09月09日 10:50:59   作者:爱吃烤鸡翅的酸菜鱼  
本文详解Ubuntu下RabbitMQ安装与配置,涵盖Erlang依赖安装、服务部署、管理界面启用及安全用户权限设置,强调多协议支持、高可用性设计和分布式场景适配,助力构建稳定可靠的消息队列系统,感兴趣的朋友跟随小编一起看看吧

1.前言

在分布式系统架构中,消息队列作为实现异步通信、服务解耦与流量削峰的关键组件,其选型直接影响系统的可靠性与扩展性。RabbitMQ 作为一款开源消息代理软件,凭借其轻量级架构、高可用性设计及灵活的路由策略,已成为解决分布式场景下通信难题的优选方案。它能够有效隔离服务依赖,通过异步处理机制提升系统吞吐量,尤其在微服务架构中展现出显著优势。

核心价值亮点

  • 多协议支持:原生兼容 AMQP 0-9-1、STOMP 等主流消息协议,可无缝对接多样化客户端环境
  • 场景适应性:广泛应用于电商订单异步处理(如支付结果通知、库存扣减)、分布式日志收集(多节点日志聚合)、实时数据管道等关键业务场景

本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。

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版本范围,建议选择官方推荐的最新兼容版本以获得最佳稳定性。

更新软件包:

sudo apt-get update

安装erlang:

sudo apt-get install erlang

查看erlang版本:

erl

退出命令:

halt().

2.2.2安装RabbitMQ

在已完成Erlang环境配置的基础上,开始安装RabbitMQ。

更新软件包:

sudo apt-get update

安装rabbitMQ:

sudo apt-get install rabbitmq-server

确认安装结果:

systemctl status rabbitmq-server

2.2.3安装RabbitMQ管理界面

默认安装是不安装管理界面的,RabbitMQ管理界面是其核心扩展功能,通过插件机制提供Web-based管理UI,可实现队列监控、用户管理、策略配置等关键运维操作。具体操作如下:

rabbitmq-plugins enable rabbitmq_management

2.2.4启动服务并访问

2.2.4.1启动服务

RabbitMQ 服务在 Ubuntu 24.04 系统中通过 systemd 系统服务管理器进行管理,需通过专用命令完成启动、开机自启配置及运行状态验证。以下为关键操作流程及说明:

sudo service rabbitmq-server start

该操作会加载 RabbitMQ 核心组件及默认配置,适用于首次安装后或服务停止后的手动激活场景1

为避免服务器重启后需手动启动服务,需配置开机自启,通过以下命令将服务注册至系统启动项:

sudo systemctl enable rabbitmq-server

此配置会在系统初始化阶段自动加载 RabbitMQ 服务,确保服务持久性可用。部分安装源指出,RabbitMQ 可能默认已配置开机自启,建议执行该命令进行显式确认。

2.2.4.2通过IP:port访问界面

在浏览器中输入以下 URL 并提供相应的用户名和密码:

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 的管理员为例:

rabbitmqctl add_user admin admin

给用户添加权限

通过 set_user_tags 命令为用户分配 administrator 角色,赋予其最高管理权限:

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

到此这篇关于Ubuntu环境下的 RabbitMQ 安装与配置详细教程的文章就介绍到这了,更多相关RabbitMQ 安装与配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot maven项目配置文件覆盖问题的处理

    Springboot maven项目配置文件覆盖问题的处理

    这篇文章主要介绍了Springboot maven项目配置文件覆盖问题的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java基础之String类使用与字符串比较

    Java基础之String类使用与字符串比较

    String类代表字符串,java程序中的所有字符串文字(例如"abc")都被实现为此类的实例。本文将详解String类的使用,以及如何进行字符串比较
    2022-08-08
  • 浅谈java中的一维数组、二维数组、三维数组、多维数组

    浅谈java中的一维数组、二维数组、三维数组、多维数组

    下面小编就为大家带来一篇浅谈java中的一维数组、二维数组、三维数组、多维数组。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • linux重启java服务的脚本

    linux重启java服务的脚本

    这篇文章主要介绍了linux重启java服务的脚本,本文分步骤通过shell脚本给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Java C++题解leetcode902最大为N的数字组合数位DP

    Java C++题解leetcode902最大为N的数字组合数位DP

    这篇文章主要为大家介绍了Java C++题解leetcode902最大为N的数字组合数位DP,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Spring底层机制环境搭建全过程

    Spring底层机制环境搭建全过程

    本文介绍了如何创建和使用Spring框架,包括模块创建、依赖引入、环境搭建、Bean的生命周期管理、AOP编程以及代码托管,通过实际操作和代码示例,详细讲解了Spring的核心概念和功能
    2024-12-12
  • 滥用@PathVariable导致bug原因分析解决

    滥用@PathVariable导致bug原因分析解决

    这篇文章主要为大家介绍了滥用@PathVariable导致bug原因分析解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • spring security如何扩展自定义登录

    spring security如何扩展自定义登录

    本文详细介绍了Spring Security的认证原理和具体实现,认证原理基于过滤器链,通过验证用户凭证和构建认证对象来保护应用程序资源,实现自定义认证功能的步骤包括创建自定义认证提供程序、实现UserDetailsService接口以及在配置类中进行相应的配置
    2024-11-11
  • SpringBoot之@Scheduled注解用法解读

    SpringBoot之@Scheduled注解用法解读

    这篇文章主要介绍了SpringBoot之@Scheduled注解用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Mybatis报错mapkey is required问题及解决

    Mybatis报错mapkey is required问题及解决

    这篇文章主要介绍了Mybatis报错mapkey is required问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论