Linux 生产环境搭建 RocketMQ 集群
大纲
RocketMQ 单机部署
RocketMQ 集群部署
前言
本文将使用两台物理主机来搭建 RocketMQ 集群,包括双节点 NameServer 集群、双主双从(2M-2S)异步复制的 Broker 集群和 RocketMQ 控制台,适用于 CentOS / Debian / Ubuntu 等 Linux 发行版。
集群部署理论介绍
RocketMQ 集群部署实战
本节将为 RocketMQ 搭建双节点 NameServer 集群和双主双从(2M-2S)异步复制的 Broker 集群。
版本说明
| 组件 | 版本 | 说明 |
|---|---|---|
| RocketMQ Server | 4.9.0 | RocketMQ 服务端(包括 NameServer 和 Broker),运行时依赖 JDK 1.8+,NameServer 默认监听 9876 端口,Broker 默认监听 10911 端口 |
| RocketMQ Console | 1.0.0 | RocketMQ 控制台,编译源码时依赖 JDK 1.7,运行时依赖 JDK 1.7+,默认监听 8080 端口 |
整体架构

NameServer 集群说明
NameServer 集群是无状态的,去中心化的,即 NameServer 集群中的各个节点间是没有地位差异,各节点之间相互不进行信息通讯。那各节点中的数据是如何进行数据同步的呢?在 Broker 节点启动时,会轮询 NameServer 列表,与 NameServer 集群中的所有节点建立长连接,并定时向所有 NameServer 节点注册 Topic 路由信息,以保证路由信息的一致性与可用性。在每个 NameServer 的内部维护着⼀个完整的 Broker 列表,用来动态存储 Broker 的信息。
Broker 集群说明
Broker 集群本质上是一个主从集群,集群节点分为 Master 节点 与 Slave 节点两种角色,其中 Master 节点负责处理读写操作请求,Slave 节点负责对 Master 节点中的数据进行同步备份。当 Master 节点宕机后,在具备自动切换能力(例如 DLedger 模式或者 Controller 模式)的情况下,Slave 节点可以被提升为 Master 节点继续对外提供服务,因此整体上可以看作主备架构。特别注意,在 RocketMQ 4.5 版本之前,传统的主从架构并不支持自动主从切换;RocketMQ 从 4.5 版本开始引入 DLedger 模式后,才开始支持自动主从切换;5.x 版本又引入了 Controller 模式,但只有手动开启 Controller 才支持自动切换,否则仍然不具备自动主从切换能力。
搭建规划
为了演示方便,这里仅使用两台物理主机来搭建双节点 NameServer 集群和双主双从(2M-2S)异步复制的 Broker 集群,两台物理主机的功能与 Broker 角色分配如下表所示:
| 物理主机序号 | 主机名 | IP | 功能 | Broker 角色 | Broker 刷盘策略 | Broker 复制策略 |
|---|---|---|---|---|---|---|
| 1 | rocketmq1 | 192.168.2.234 | NameServer + Broker | Master Broker 1 + Slave Broker 2 | 异步刷盘 | 异步复制 |
| 2 | rocketmq2 | 192.168.2.148 | NameServer + Broker | Master Broker 2 + Slave Broker 1 | 异步刷盘 | 异步复制 |

RocketMQ 集群搭建建议
- 在条件允许的情况下,生产环境中可以使用多台物理主机搭建 NamerServer 集群和 Broker 集群,即 NamerServer 集群采用三节点架构,Broker 集群采用三主三从(3M-3S)的异步复制架构。该方案能够提供更高的吞吐能力、更好的容灾能力,并使 Topic / Queue 分布更加均衡,适用于高并发场景(如交易系统、日志平台)。
- 比如,生产环境中可采用 9 台物理机器进行完全隔离部署:其中 3 台服务器分别独立部署 3 个 NameServer 节点,构成 NameServer 集群;另外 6 台用于部署 Broker 集群,按主从架构部署为三主三从(3M-3S),其中 3 台分别部署 Master Broker,另外 3 台分别部署对应的 Slave Broker,实现高可用与数据冗余。
- 在生产环境中,即使 Broker 集群已采用主从架构,如果 Master 与 Slave 之间是采用异步复制策略,仍然存在数据尚未同步即发生故障而导致数据丢失的风险。同时,为了避免单个磁盘损坏造成数据丢失,并提升磁盘写入性能,所有 Master 节点都必须配置 RAID10 磁盘阵列作为基础保障。特别注意,异步刷盘解决的是写入性能问题,RAID10 磁盘阵列解决的是磁盘可靠性问题,两者都无法避免 "刷盘前" 这段时间窗口的数据丢失,除非是使用同步刷盘。
配置集群
多物理主机操作
在所有物理主机上(包括 rocketmq1 和 rocketmq2),分别执行以下所有操作,为 RocketMQ 集群的搭建做准备。
创建用户
特别注意
本文所有命令默认都是在 rocketmq 用户权限下执行,除了特别说明除外(比如 sudo xxxx 命令)。
- 创建用户组
1 | sudo groupadd rocketmq |
- 创建用户(禁止登录)
1 | sudo useradd -g rocketmq -m -s /sbin/nologin rocketmq |
- 切换用户
1 | sudo -u rocketmq -s |
系统配置
设置主机名
- 设置主机名,比如
rocketmq1或者rocketmq2
1 | sudo hostnamectl set-hostname xxxxx |
防火墙配置
- CentOS、Fedora 关闭防火墙
1 | # 立即关闭防火墙 |
- Debian、Ubuntu 关闭防火墙
1 | # 立即关闭防火墙 |
环境准备
版本说明
RocketMQ 的服务端(4.9.0 版本)包含两个服务,分别是 NameServer 和 Broker 服务,这两个服务都需要单独启动,且运行时都依赖 JDK 1.8+。
JDK 手动安装
- 下载并安装 JDK(
1.8版本)
1 | # 下载文件(OpenJDK 1.8,Azul Zulu 发行版) |
全局环境变量配置
- 配置系统环境变量
1 | # 编辑系统配置文件,在文件末尾添加以下内容 |
1 | export JAVA_HOME=/usr/local/jdk-1.8.0_402 |
- 让系统环境变量生效
1 | sudo source /etc/profile |
用户环境变量配置
1 | # 切换至 rocketmq 用户 |
1 | # 编辑用户配置文件,在文件末尾添加以下内容 |
1 | export JAVA_HOME=/usr/local/jdk-1.8.0_402 |
- 让用户环境变量生效
1 | source ~/.bashrc |
验证 JDK 安装
1 | java -version |
软件下载
从 RocketMQ 官网 下载对应版本的二进制压缩包(比如 rocketmq-all-4.9.0-bin-release.zip),如下图所示:

- 安装工具
1 | # CentOS、Fedora |
- 下载文件
1 | wget https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip |
- 解压文件
1 | # 解压文件 |
JVM 配置
更改 NameServer 的 JVM 配置参数
- 编辑
runserver.sh脚本文件,根据物理主机的实际内存大小修改 NameServer 的 JVM 配置参数
1 | # 编辑 NameServer 的启动脚本文件,更改以下内容 |
1 | JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" |
更改 Broker 的 JVM 配置参数
- 编辑
runbroker.sh脚本文件,根据物理主机的实际内存大小修改 Broker 的 JVM 配置参数
1 | # 编辑 Broker 的启动脚本文件,更改以下内容 |
1 | JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g" |
JVM 参数调优
物理主机一操作
在物理主机一上(rocketmq1),分别执行以下所有操作,目的是部署 Master Broker 1 和 Slave Broker 2。
创建存储目录
- 创建 Master Broker 1 的数据存储目录
1 | mkdir -p /home/rocketmq/store-m1/index |
- 创建 Slave Broker 2 的数据存储目录
1 | mkdir -p /home/rocketmq/store-s2/index |
配置 Broker
特别注意
在更改 Broker 的配置文件时,如果遇到路径相关的配置(如 storePathRootDir、storePathCommitLog 等),则必须使用绝对路径,不能使用相对路径,比如 storePathRootDir=~/store,否则 Broker 可能会启动失败。
- 进入 RocketMQ 的配置目录(双主双从异步复制)
1 | cd rocketmq-all-4.9.0/conf/2m-2s-async/ |
- 更改配置文件
broker-a.properties的内容(如下),作为 Master Broker 1 的核心配置文件
1 | # 编辑配置文件,添加以下配置内容 |
1 | # 指定整个 Broker 集群的名称,或者说是 RocketMQ 集群的名称 |
- 更改配置文件
broker-b-s.properties的内容(如下),作为 Slave Broker 2 的核心配置文件
1 | # 编辑配置文件,添加以下配置内容 |
1 | # Broker集群名称 |
- 除了以上核心配置外,这些配置文件中还可以按需配置其它属性(如果不配置,则会使用对应的默认值),完整的配置示例如下:
1 | # 指定整个 Broker 集群的名称,或者说是 RocketMQ 集群的名称 |
物理主机二操作
在物理主机二上(rocketmq2),分别执行以下所有操作,目的是部署 Master Broker 2 和 Slave Broker 1。
创建存储目录
- 创建 Master Broker 2 的数据存储目录
1 | mkdir -p /home/rocketmq/store-m2/index |
- 创建 Slave Broker 1 的数据存储目录
1 | mkdir -p /home/rocketmq/store-s1/index |
配置 Broker
特别注意
在更改 Broker 的配置文件时,如果遇到路径相关的配置(如 storePathRootDir、storePathCommitLog 等),则必须使用绝对路径,不能使用相对路径,比如 storePathRootDir=~/store,否则 Broker 可能会启动失败。
- 进入 RocketMQ 的配置目录(双主双从异步复制)
1 | cd rocketmq-all-4.9.0/conf/2m-2s-async/ |
- 更改配置文件
broker-b.properties的内容(如下),作为 Master Broker 2 的核心配置文件
1 | # 编辑配置文件,添加以下配置内容 |
1 | # 指定整个 Broker 集群的名称,或者说是 RocketMQ 集群的名称 |
- 更改配置文件
broker-a-s.properties的内容(如下),作为 Slave Broker 1 的核心配置文件
1 | # 编辑配置文件,添加以下配置内容 |
1 | # Broker集群名称 |
- 除了以上核心配置外,这些配置文件中还可以按需配置其它属性(如果不配置,则会使用对应的默认值),完整的配置示例如下:
1 | # 指定整个 Broker 集群的名称,或者说是 RocketMQ 集群的名称 |
启动集群
特别注意
- 在生产环境中,为了系统安全,强烈建议使用普通用户(比如
rocketmq)权限来启动 RocketMQ 的 NameServer 和 Broker 服务。 - 在生产环境中,强烈建议使用 Systemd 或 Supervisor 等进程管理工具来管理 RocketMQ 的 NameServer 和 Broker 服务,以实现进程守护和故障自动重启。
NameServer 集群
由于 NameServer 集群无主从关系、去中心化设计,因此所有 NameServer 节点的启动命令都是相同的。
启动第一个节点
- 在物理主机一上(
rocketmq1),启动 NameServer 集群的第一个节点
1 | # 进入 RocketMQ 的安装目录 |
启动第二个节点
- 在物理主机二上(
rocketmq2),启动 NameServer 集群的第二个节点
1 | # 进入 RocketMQ 的安装目录 |
Broker 集群
由于 Broker 集群存在主从关系,因此不同 Master 和 Slave 节点启动时所要加载的配置文件是不同的。值得一提的是,不同 Broker 节点对应的配置文件如下表所示:
| 物理主机序号 | Broker 角色 | 配置文件 |
|---|---|---|
| 1 | Master Broker 1 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-a.properties |
| 1 | Slave Broker 2 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-b-s.properties |
| 2 | Master Broker 2 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-b.properties |
| 2 | Slave Broker 1 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-a-s.properties |
Broker 启动失败原因排查
- 如果 Broker 无法正常启动,可以查看以下日志文件来排查问题:
~/logs/rocketmqlogs/store.log~/logs/rocketmqlogs/broker.log
启动两个 Master
- 在物理主机一上(
rocketmq1),启动 Master Broker 1
1 | # 进入 RocketMQ 的安装目录 |
- 在物理主机二上(
rocketmq2),启动 Master Broker 2
1 | # 进入 RocketMQ 的安装目录 |
启动两个 Slave
- 在物理主机一上(
rocketmq1),启动 Slave Broker 2
1 | # 进入 RocketMQ 的安装目录 |
- 在物理主机二上(
rocketmq2),启动 Slave Broker 1
1 | # 进入 RocketMQ 的安装目录 |
测试集群
发送消息
1 | # 进入 RocketMQ 的安装目录 |
1 | SendResult [sendStatus=SEND_OK, msgId=FD34DD838CB90000AC480E823DAC73A022B028D93B30378408E803E5, offsetMsgId=C0A802EA00002A9F0000000000037483, messageQueue=MessageQueue [topic=TopicTest, brokerName=broker-a, queueId=2], queueOffset=249] |
接收消息
1 | # 进入 RocketMQ 的安装目录 |
1 | ConsumeMessageThread_9 Receive New Messages: [MessageExt [brokerName=broker-b, queueId=3, storeSize=227, queueOffset=178, sysFlag=0, bornTimestamp=1775904198499, bornHost=/192.168.2.148:33524, storeTimestamp=1775904198500, storeHost=/192.168.2.148:10911, msgId=C0A8029400002A9F00000000000278B1, commitLogOffset=161969, bodyCRC=1570433042, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1775904266402, UNIQ_KEY=FD34DD838CB90000AC480E823DAC73A022B028D93B303784036301AA, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 52, 50, 54], transactionId='null'}]] |
关闭集群
RocketMQ 无论是关闭 NameServer 集群还是 Broker 集群,都可以使用 bin/mqshutdown 命令。
特别注意
在 RocketMQ 集群关闭的过程中,通常应该先关闭 Broker 集群,再关闭 NameServer 集群。因为 Broker 的运行依赖向 NameServer 注册路由信息,Producer 和 Consumer 也通过 NameServer 获取 Broker 地址列表;如果先关闭 NameServer,会导致路由获取和更新失败,可能引发生产者发送异常、消费者消费异常以及 Broker 心跳状态不一致等问题,而先关闭 Broker 可以让系统停止接收新消息并完成存量消费,最后再关闭 NameServer 则更安全、规范。
Broker 集群
在 Broker 所在的多台物理主机上(包括 rocketmq1 和 rocketmq2),分别执行以下命令:
- 关闭 Broker
1 | # 进入 RocketMQ 的安装目录 |
NameServer 集群
在 NameServer 所在的多台物理主机上(包括 rocketmq1 和 rocketmq2),分别执行以下命令:
- 关闭 NameServer
1 | # 进入 RocketMQ 的安装目录 |
管理集群
在上述搭建的 RocketMQ 集群中,NameServer 和 Broker 服务都是通过 nohup 命令实现后台运行的,这种方式无法实现进程守护,也不支持开机自动启动和故障自动重启进程。为了解决这些问题,建议使用 Supervisor 对 NameServer 和 Broker 进程进行统一管理,以提升服务的稳定性和可运维性。首先关闭 RocketMQ 集群,然后安装并启动 Supervisor 服务(如下所示),最后添加相应的 Supervisor 配置文件来管理 NameServer 和 Broker 进程。
RocketMQ 自带的 mqadmin 管理工具
在 RocketMQ 的 bin 目录下有一个 mqadmin 管理工具,它是一个运维命令,用于对 RocketMQ 的集群、Topic、Broker 等信息进行管理,详细使用教程可以看 这里 的介绍。
准备工作
关闭 RocketMQ 集群
在所有物理主机上(包括 rocketmq1 和 rocketmq2),分别执行以下命令:
- 关闭 Broker 集群
1 | # 进入 RocketMQ 的安装目录 |
- 关闭 NameServer 集群
1 | # 进入 RocketMQ 的安装目录 |
Supervisor 安装
在所有物理主机上(包括 rocketmq1 和 rocketmq2),分别执行以下命令:
- CentOS、Fedora 安装 Supervisor
1 | # 安装 Supervisor |
- Debian、Ubuntu 安装 Supervisor
1 | # 安装 Supervisor |
NameServer 集群
这里以 NameServer 集群的第一个节点为例,演示如何使用 Supervisor 来管理 NameServer 进程,其余 NameServer 节点的配置步骤相同,不再赘述。
- 创建 Supervisor 配置文件
1 | # 创建配置文件,写入以下配置内容 |
1 | ; 定义一个被 Supervisor 管理的程序,名称为 rocketmq-namesrv |
NameServer 进程的关闭
在使用 Supervisor 管理 NameServer 进程时,不能使用 stopcommand=/bin/bash -c "sh /home/rocketmq/rocketmq-all-4.9.0/bin/mqshutdown namesrv" 配置内容来关闭 NameServer 进程,因为 mqshutdown namesrv 此命令会在当前物理主机上扫描 JVM 进程并关闭所有 NameServer 进程,无法区分具体 NameServer 实例,属于全局操作,不适用于多个 NameServer 实例的场景;应通过 Supervisor 自身的进程级控制实现单个 NameServer 的启停。
- 创建 Supervisor 日志目录
1 | # 创建日志目录 |
- 重新加载 Supervisor 配置文件
1 | # 重新读取 Supervisor 配置文件(不会立即生效) |
- NameServer 常用管理命令
1 | # 启动 NameServer |
- NameServer 查看日志信息
1 | # 查看 NameServer 的运行日志信息 |
Broker 集群
这里以 Master Broker 1 节点为例,演示如何使用 Supervisor 来管理 Broker 进程,其余 Broker 节点的配置步骤与之类似(注意,不同 Broker 节点启动时使用的 Properties 配置文件是不一样的),不再赘述。值得注意的是,在为 Broker 各节点配置 Supervisor 管理时,必须优先配置并启动 2 个 Master 节点,再配置并启动 2 个 Slave 节点,以保证 Broker 集群主从关系的正确建立。
- 创建 Supervisor 配置文件
1 | # 创建配置文件,写入以下配置内容 |
1 | ; 定义一个被 Supervisor 管理的程序,名称为 rocketmq-broker-m1 |
Broker 进程的关闭
在使用 Supervisor 管理 Broker 进程时,不能使用 stopcommand=/bin/bash -c "sh /home/rocketmq/rocketmq-all-4.9.0/bin/mqshutdown broker" 配置内容来关闭 Broker 进程,因为 mqshutdown broker 此命令会在当前物理主机上扫描 JVM 进程并关闭所有 Broker 进程,无法区分具体 Broker 实例,属于全局操作,不适用于多个 Broker 实例的场景;应通过 Supervisor 自身的进程级控制实现单个 Broker 的启停。
- 创建 Supervisor 日志目录
1 | # 创建日志目录 |
- 重新加载 Supervisor 配置文件
1 | # 重新读取 Supervisor 配置文件(不会立即生效) |
- Broker 常用管理命令
1 | # 启动 Broker |
- Broker 查看日志信息
1 | # 查看 Broker 的运行日志信息 |
其他 Broker 节点的 Supervisor 管理配置方式
其他 Broker 节点的 Supervisor 配置与 Master Broker 1 基本一致,通常只需要将上述配置和命令中的 broker-m1 替换为对应 Broker 节点的标识(比如 broker-m2),并将 -c /home/rocketmq/rocketmq-all-4.9.0/conf/2m-2s-async/broker-a.properties 中的 broker-a.properties 替换为该节点对应的配置文件(比如 broker-b.properties)即可。不同 Broker 节点对应的配置文件如下表所示:
| 物理主机序号 | Broker 角色 | Broker 标识 | 配置文件 |
|---|---|---|---|
| 1 | Master Broker 1 | broker-m1 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-a.properties |
| 1 | Slave Broker 2 | broker-s2 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-b-s.properties |
| 2 | Master Broker 2 | broker-m2 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-b.properties |
| 2 | Slave Broker 1 | broker-s1 | rocketmq-all-4.9.0/conf/2m-2s-async/broker-a-s.properties |
- 最终在物理主机一(
rocketmq1)上配置完 Supervisor 的进程管理后,执行sudo supervisorctl status命令输出的结果如下:
1 | rocketmq-broker-m1 RUNNING pid 8907, uptime 0:56:15 |
- 最终在物理主机二(
rocketmq2)上配置完 Supervisor 的进程管理后,执行sudo supervisorctl status命令输出的结果如下:
1 | rocketmq-broker-m2 RUNNING pid 7031, uptime 0:46:01 |
RocketMQ 控制台部署实战
RocketMQ Dashboard 是 RocketMQ 官方开发的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作,其核心功能如下表所示:
| 面板 | 功能 |
|---|---|
| 运维 | 修改 NamServer 地址;选用 VIPChannel |
| 驾驶舱 | 查看 Broker、Topic 消息量 |
| 集群 | 集群分布,Broker 配置、运行信息 |
| 主题 | 搜索、筛选、删除、更新 / 新增主题,消息路由,发送消息,重置消费位点 |
| 消费者 | 搜索、删除、新增 / 更新消费者组,终端,消费详情,配置 |
| 消息 | 消息记录,死信消息,消息轨迹等消息详情 |
特别注意
- 以下所有操作,只需要在任意一台物理主机(比如
rocketmq1)上执行,无需在所有物理主机上重复执行。 - RocketMQ 控制台既可以与 NameServer 和 Broker 部署在同一台机器上,也可以独立部署在其他机器上。
- RocketMQ 控制台通常只需部署一个实例,如果需要实现高可用,可以部署多个实例,并通过 Nginx 或 HAProxy 进行负载均衡。
准备工作
RocketMQ 控制台需要通过编译源码的方式来安装,因此需要提前安装 JDK 和 Maven。
JDK 版本说明
RocketMQ 控制台项目(1.0.0 版本)在编译阶段依赖 JDK 1.7(即使用 Java 7 语法和字节码版本进行编译),但在运行阶段兼容 JDK 1.7 及以上版本,因此可以正常运行在 JDK 1.8+ 环境中。
JDK 安装
JDK 手动安装
- 下载并安装 JDK(
1.7版本)
1 | # 下载文件(OpenJDK 1.7,Azul Zulu 发行版) |
全局环境变量配置
- 配置系统环境变量
1 | # 编辑系统配置文件,在文件末尾添加以下内容 |
1 | export JAVA_HOME=/usr/local/jdk-7.0.352 |
- 让系统环境变量生效
1 | sudo source /etc/profile |
用户环境变量配置
1 | # 切换至 rocketmq 用户 |
1 | # 编辑用户配置文件,在文件末尾添加以下内容 |
1 | export JAVA_HOME=/usr/local/jdk-7.0.352 |
- 让用户环境变量生效
1 | source ~/.bashrc |
验证 JDK 安装
1 | java -version |
Maven 安装
Maven 手动安装
- 下载并安装 Maven
1 | # 下载文件 |
全局环境变量配置
- 配置系统环境变量
1 | # 编辑系统配置文件,在文件末尾添加以下内容 |
1 | export MAVEN_HOME=/usr/local/maven-3.6.0 |
- 让系统环境变量生效
1 | sudo source /etc/profile |
用户环境变量配置
1 | # 切换至 rocketmq 用户 |
1 | # 编辑用户配置文件,在文件末尾添加以下内容 |
1 | export MAVEN_HOME=/usr/local/maven-3.6.0 |
- 让用户环境变量生效
1 | source ~/.bashrc |
验证 Maven 安装
1 | mvn -version |
软件下载
从 RocketMQ 官方的 GitHub Tags 下载控制台的源代码压缩包(比如 rocketmq-console-1.0.0.zip),如下图所示:

- 下载文件
1 | wget https://github.com/apache/rocketmq-externals/archive/refs/tags/rocketmq-console-1.0.0.zip |
- 解压文件
1 | # 解压文件 |
打包项目
- 更改控制台的配置文件
1 | # 编辑控制台的配置文件,更改以下内容 |
1 | # 默认的端口号是 8080,将其更改为一个不常用的端口 |
- 添加 Maven 依赖项(JAXB)
1 | # 编辑控制台的 Maven 配置文件,添加以下内容 |
1 | <dependency> |
JAXB 是什么
JAXB(Java Architechture for Xml Binding)用于 XML 绑定的 Java 技术,是一个业界标准,是一项可以根据 XML Schema 生成 Java 类的技术。
- Maven 打包控制台项目
1 | # 编译打包控制台项目 |
启动服务
- 启动控制台
1 | # 后台启动控制台 |
测试服务
- 浏览器打开
http://192.168.2.234:7000访问 RocketMQ 的控制台,请自行更改 IP 地址,默认端口号是8080,如下图所示:


管理服务
上述部署的 RocketMQ 控制台是通过 nohup 命令实现后台运行的,这种方式无法实现进程守护,也不支持开机自动启动和故障自动重启进程。为了解决这些问题,建议使用 Supervisor 对 RocketMQ 控制台进程进行统一管理,以提升服务的稳定性和可运维性。首先安装并启动 Supervisor 服务(详细的安装步骤可以参考 这里),然后添加相应的 Supervisor 配置文件来管理 RocketMQ 控制台进程。
- 创建 Supervisor 配置文件
1 | # 创建配置文件,写入以下配置内容 |
1 | ; 定义一个被 Supervisor 管理的程序,名称为 rocketmq-console |
- 创建 Supervisor 日志目录
1 | # 创建日志目录 |
- 重新加载 Supervisor 配置文件
1 | # 重新读取 Supervisor 配置文件(不会立即生效) |
- RocketMQ 控制台常用管理命令
1 | # 启动 RocketMQ 控制台 |
- RocketMQ 控制台查看日志信息
1 | # 查看 RocketMQ 控制台的运行日志信息 |
