news 2026/6/18 22:43:43

Java-202 RabbitMQ 生产安装与容器快速启动:Erlang 兼容、RPM 部署与常用命令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java-202 RabbitMQ 生产安装与容器快速启动:Erlang 兼容、RPM 部署与常用命令

TL;DR

  • 场景:RHEL 系(CentOS/RockyLinux)用 RPM 做 RabbitMQ 生产部署,同时用 Docker Compose 快速学习。
  • 结论:关键风险在 Erlang/RabbitMQ 版本兼容与包来源一致性;其次是端口、插件、用户权限与安全基线。
  • 产出:给出可落地的安装路径、版本矩阵写法与高频报错速查卡,便于上线排障。

RabbitMQ 安装

服务安装(生产推荐)

首先我们需要确认的环境准备:

  1. 操作系统环境:

    • 支持 CentOS 7/8、RockyLinux 8/9 等 RHEL 系发行版
    • 建议使用最小化安装的系统,减少不必要的软件冲突
  2. Erlang 环境要求:

    • RabbitMQ 是基于 Erlang 虚拟机(BEAM)运行的消息中间件
    • 必须预先安装兼容版本的 Erlang 运行时
    • 建议版本不低于 Erlang 23.x
  3. 系统依赖包:

    • socat:用于集群间通信
    • logrotate:日志轮转管理
    • openssl:安全通信支持
    • 其他编译工具链(gcc, make等)

安装步骤说明:

  1. 安装 Erlang:

    • 可以通过 EPEL 仓库安装
    • 或从 Erlang Solutions 获取最新版本
    • 示例命令:yum install erlang
  2. 验证 Erlang:

    • 执行erl -version检查安装
    • 确保版本符合 RabbitMQ 要求
  3. 版本兼容性检查:

    • 必须参考官方兼容性文档
    • 访问 RabbitMQ Erlang 兼容性指南
    • 例如 RabbitMQ 3.9.x 需要 Erlang 23.2+

注意事项:

  • 生产环境建议使用相同次要版本的 Erlang
  • 避免混用不同仓库的软件包
  • 升级时需先检查兼容性矩阵首先我们需要确认的环境准备:
  1. 操作系统环境:

    • 支持 CentOS 7/8、RockyLinux 8/9 等 RHEL 系发行版
    • 建议使用最小化安装的系统,减少不必要的软件冲突
  2. Erlang 环境要求:

    • RabbitMQ 是基于 Erlang 虚拟机(BEAM)运行的消息中间件
    • 必须预先安装兼容版本的 Erlang 运行时
    • 建议版本不低于 Erlang 23.x
  3. 系统依赖包:

    • socat:用于集群间通信
    • logrotate:日志轮转管理
    • openssl:安全通信支持
    • 其他编译工具链(gcc, make等)

安装步骤说明:

  1. 安装 Erlang:

    • 可以通过 EPEL 仓库安装
    • 或从 Erlang Solutions 获取最新版本
    • 示例命令:yum install erlang
  2. 验证 Erlang:

    • 执行erl -version检查安装
    • 确保版本符合 RabbitMQ 要求
  3. 版本兼容性检查:

    • 必须参考官方兼容性文档
    • 访问 RabbitMQ Erlang 兼容性指南
    • 例如 RabbitMQ 3.9.x 需要 Erlang 23.2+

注意事项:

  • 生产环境建议使用相同次要版本的 Erlang
  • 避免混用不同仓库的软件包
  • 升级时需先检查兼容性矩阵

socat

我们在服务器上安装 socat:

yuminstallsocat -y

Erlang

然后安装 Erlang:

https://github.com/rabbitmq/erlang-rpm/releases/download/v23.0.2/erlang-23.0.2-1.el7.x86_64.rpm

将文件上传到服务器后,我们执行安装:

rpm-ivh erlang-23.0.2-1.el7.x86_64.rpm

RabbitMQ

接着我们下载MQ:

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.4/rabbitmq-server-3.8.4-1.el7.noarch.rpm

上传到服务器之后,我们安装:

rpm-ivh rabbitmq-server-3.8.4-1.el7.noarch.rpm

启动插件

rabbitmq-pluginsenablerabbitmq_management

启动RabbitMQ服务的几种方式

1. 使用systemctl启动(推荐用于生产环境)
systemctl start rabbitmq-server
  • 这是最标准的启动方式,适用于使用systemd的Linux系统
  • 会自动处理服务依赖关系和日志记录
  • 示例场景:在Ubuntu 18.04+/CentOS 7+等现代Linux发行版中使用
2. 直接运行可执行文件(适合开发环境)
rabbitmq-server
  • 会在前台运行,方便查看实时日志
  • 按Ctrl+C可停止服务
  • 典型使用场景:本地开发测试时快速启动
3. 后台守护进程模式
rabbitmq-server -detached
  • 添加-detached参数使服务在后台运行
  • 不会占用当前终端
  • 停止服务需要使用rabbitmqctl stop
  • 适用情况:需要后台运行但又不想配置systemd服务时

其他相关命令

# 查看服务状态systemctl status rabbitmq-server# 设置开机自启systemctlenablerabbitmq-server# 停止服务systemctl stop rabbitmq-server

注意:不同Linux发行版的包管理命令可能略有差异,例如在RHEL系使用yum,Debian系使用apt安装时,服务名称保持一致。

添加用户

rabbitmqctl add_user root123456

添加权限

rabbitmqctl set_permissions root -p /".*"".*"".*"

设置用户标签(RabbitMQ用户权限管理)

rabbitmqctl set_user_tags root administrator

详细说明:

  1. 此命令用于为RabbitMQ用户设置标签,这里是给用户root添加administrator管理员标签

  2. 标签类型说明:

    • administrator:管理员权限,拥有所有操作权限
    • monitoring:监控权限,可以查看所有信息但不能修改
    • policymaker:策略制定权限,可以管理虚拟主机策略
    • management:基本管理权限,可以使用管理插件
  3. 典型应用场景:

    • 新用户创建后需要分配管理权限
    • 需要调整现有用户的权限级别
    • 在多租户环境中管理不同用户的访问权限
  4. 相关命令:

    • 查看用户标签:rabbitmqctl list_users
    • 删除用户标签:rabbitmqctl clear_user_tags username

注意事项:

  • 执行此命令需要RabbitMQ管理员权限
  • 修改会立即生效,无需重启服务
  • 建议使用专用管理账号而非root账号进行日常管理### 设置用户标签(RabbitMQ用户权限管理)
rabbitmqctl set_user_tags root administrator

详细说明:

  1. 此命令用于为RabbitMQ用户设置标签,这里是给用户root添加administrator管理员标签

  2. 标签类型说明:

    • administrator:管理员权限,拥有所有操作权限
    • monitoring:监控权限,可以查看所有信息但不能修改
    • policymaker:策略制定权限,可以管理虚拟主机策略
    • management:基本管理权限,可以使用管理插件
  3. 典型应用场景:

    • 新用户创建后需要分配管理权限
    • 需要调整现有用户的权限级别
    • 在多租户环境中管理不同用户的访问权限
  4. 相关命令:

    • 查看用户标签:rabbitmqctl list_users
    • 删除用户标签:rabbitmqctl clear_user_tags username

注意事项:

  • 执行此命令需要RabbitMQ管理员权限
  • 修改会立即生效,无需重启服务
  • 建议使用专用管理账号而非root账号进行日常管理

标签内容有:

容器安装(学习推荐)

compose

我们可以通过容器来快速启动服务,方便我们学习使用:

services:rabbitmq:image:rabbitmq:3.8.4-managementcontainer_name:rabbitmq-3.8restart:unless-stoppedports:-"5672:5672"# AMQP-"15672:15672"# 管理界面environment:RABBITMQ_DEFAULT_USER:adminRABBITMQ_DEFAULT_PASS:secretvolumes:-rabbitmq_data:/var/lib/rabbitmqvolumes:rabbitmq_data:

内容如下所示:

启动服务

我们启动:

docker compose up -d

等待结束:

访问服务

我们访问 15672 端口,填写刚才文件中的账号密码:

RabbitMQ 管理命令大全

服务启动与停止

前台启动

在前台启动 Erlang VM 和 RabbitMQ 服务,适合调试时使用:

rabbitmq-server

后台启动

以守护进程方式在后台启动服务,适合生产环境:

rabbitmq-server -detached

停止服务

安全停止 RabbitMQ 和 Erlang VM:

rabbitmqctl stop

应用管理

应用控制

在 Erlang VM 已运行的情况下控制 RabbitMQ 应用:

# 启动应用rabbitmqctl start_app# 停止应用(不停止Erlang VM)rabbitmqctl stop_app

节点状态检查

查看节点运行状态和统计信息:

rabbitmqctl status

队列管理

查看队列

列出所有队列及其消息数量(可添加name, messages等参数显示更多信息):

rabbitmqctl list_queues

虚拟主机管理

查看所有虚拟主机(vhost):

rabbitmqctl list_vhosts

插件管理

插件操作

# 列出所有可用插件(包括已启用/未启用的)rabbitmq-plugins list# 启用指定插件(如rabbitmq_management)rabbitmq-pluginsenable<plugin-name># 停用指定插件rabbitmq-plugins disable<plugin-name>

用户管理

用户操作

# 添加新用户(用户名和密码)rabbitmqctl add_user username password# 列出所有用户及其标签rabbitmqctl list_users# 删除用户rabbitmqctl delete_user username# 清除用户在特定vhost的权限rabbitmqctl clear_permissions -p vhostpath username

高级用法示例

查看队列详情(带更多参数)

rabbitmqctl list_queues name messages messages_ready messages_unacknowledged

创建虚拟主机并设置权限

# 创建vhostrabbitmqctl add_vhost /my_vhost# 设置用户权限rabbitmqctl set_permissions -p /my_vhost username".*"".*"".*"

查看连接信息

rabbitmqctl list_connections

查看信道信息

rabbitmqctl list_channels

错误速查

症状根因定位修复
rpm -ivh rabbitmq-server-...rpm报依赖缺失socat/openssl 等依赖未装或版本不匹配rpm -qpR 包名.rpm,或看报错缺什么库先装 socat、openssl 等依赖;统一仓库来源,避免混装。
下载 3.8.5,却安装命令写成 3.8.4文档版本号不一致导致误操作对比下载链接与rpm -ivh文件名统一为同一版本号;建议把“下载链接/文件名/安装命令”三者对齐。
rabbitmq-server启动失败,提示 Erlang 版本不兼容Erlang/OTP 与 RabbitMQ 版本区间不匹配erl -version;RabbitMQ 启动日志按官方兼容矩阵选择 Erlang 版本;生产固定“可复现组合”。
systemctl start rabbitmq-server失败service unit/权限/数据目录问题或节点没起来systemctl status+journalctl -u rabbitmq-server根据日志修复目录权限、磁盘空间、端口占用;必要时清理残留状态后重启。
rabbitmq-plugins enable rabbitmq_management失败节点未运行、插件目录不可写、版本不匹配rabbitmqctl status、插件命令输出先确保rabbitmq-server正常启动;修复权限;核对包版本。
访问 15672 失败(浏览器打不开)端口未监听/防火墙未放行/管理插件未启用ss -lntp|grep 15672;插件列表添加用户后登录管理台失败
用户权限/标签未设置或 vhost 权限缺失rabbitmqctl list_userslist_permissions -p /set_permissionsset_user_tags配套执行;确保对目标 vhost 授权。
set_permissions成功但业务仍拒绝使用了非/vhost 或应用连接串 vhost 不一致管理台查看 vhost;应用连接参数为实际 vhost 设置权限;统一应用侧 vhost 配置。
Docker Compose 启动后数据丢失未挂载卷或卷名变化docker volume ls;容器挂载信息保持volumes: rabbitmq_data:/var/lib/rabbitmq;不要频繁改卷名。
Compose 启动报权限/写入失败宿主机目录/卷权限与容器用户不匹配docker logs改用命名卷或修复宿主机目录权限;避免直接挂载无权限路径。
默认账号/弱口令带来安全风险admin/secret、root/123456 属于可猜测凭据配置与命令段落可直接识别学习环境可保留但必须标注“仅限本地/内网”;生产改强口令并限制 15672 暴露面。

其他系列

🚀 AI篇持续更新中(长期更新)

AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究,持续打造实用AI工具指南!
AI研究-132 Java 生态前沿 2025:Spring、Quarkus、GraalVM、CRaC 与云原生落地
🔗 AI模块直达链接

💻 Java篇持续更新中(长期更新)

Java-196 消息队列选型:RabbitMQ vs RocketMQ vs Kafka
MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务已完结,Dubbo已完结,MySQL已完结,MongoDB已完结,Neo4j已完结,FastDFS 已完结,OSS已完结,GuavaCache已完结,EVCache已完结,RabbitMQ正在更新… 深入浅出助你打牢基础!
🔗 Java模块直达链接

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解
🔗 大数据模块直达链接

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 7:16:19

FingerJetFXOSE完全解析:免费开源的指纹特征提取技术实现

FingerJetFXOSE完全解析&#xff1a;免费开源的指纹特征提取技术实现 【免费下载链接】FingerJetFXOSE Fingerprint Feature Extractor; the initial contribution by DigitalPersona is MINEX Compliant (SDK 3F). 项目地址: https://gitcode.com/gh_mirrors/fi/FingerJetFX…

作者头像 李华
网站建设 2026/6/18 19:28:06

基于fluent的SLM过程模拟:包含案例、热源UDF及粉末导入

基于fluent的slm过程模拟&#xff0c;包含案例&#xff0c;热源udf&#xff0c;粉末的导入都有涉及。在增材制造领域&#xff0c;选择性激光熔化&#xff08;SLM&#xff09;技术因其高精度和复杂形状的制造能力而备受关注。今天&#xff0c;我们就来聊聊如何基于Fluent进行SLM…

作者头像 李华
网站建设 2026/6/19 2:11:06

Xshell:跨平台远程管理的终端利器

目录 一、技术架构 1.1 多协议引擎 1.2 跨平台支持 二、功能特性 2.1 多会话管理 2.2 自动化与脚本支持 2.3 文件传输集成 三、应用场景 3.1 开发测试环境 3.2 混合云管理 3.3 嵌入式系统调试 四、安全体系 4.1 传输加密 4.2 审计与合规 4.3 安全更新机制 五、版本演进 5.…

作者头像 李华
网站建设 2026/6/18 22:00:46

Golang Word文档自动化终极指南:5大实战场景深度解析

Golang Word文档自动化终极指南&#xff1a;5大实战场景深度解析 【免费下载链接】docx Simple Google Go (Golang) library for replacing text in Microsoft Word (.docx) file 项目地址: https://gitcode.com/gh_mirrors/docx/docx 在日常开发工作中&#xff0c;处理…

作者头像 李华
网站建设 2026/6/18 21:05:02

物流仓储Agent效率突飞猛进:基于强化学习的动态分拣策略全披露

第一章&#xff1a;物流仓储 Agent 的分拣效率 在现代物流系统中&#xff0c;仓储 Agent 作为自动化分拣的核心组件&#xff0c;其效率直接影响整体运营表现。通过智能调度与路径优化&#xff0c;Agent 能够在复杂仓库环境中快速定位货品并完成搬运任务&#xff0c;显著降低人工…

作者头像 李华