在构建现代化的微服务或后端架构时,一个稳定可靠的消息中间件是解耦服务、实现异步通信的关键。Apache RocketMQ 作为一款高性能、高可用的分布式消息和流处理平台,是众多开发者的首选。然而,从本地部署到实现安全的公网访问,中间的网络配置环节往往让开发者望而却步。本文将手把手带你完成在 Linux 系统上部署 RocketMQ 5.x 的全过程。
一、部署准备:环境与资源规划
在开始部署之前,充分的准备工作能避免后续的许多麻烦。首先,确保你的 Linux 服务器满足以下基础条件:
操作系统: 主流的 Linux 发行版均可,如 CentOS 7+/Ubuntu 20.04+。
Java 环境: RocketMQ 基于 Java 开发,需要预先安装 JDK 8 或更高版本。你可以通过以下命令检查:
java -version
如果未安装,请先安装 OpenJDK 或 Oracle JDK。其次,内存资源是关键。RocketMQ 的 NameServer 和 Broker 进程对内存有一定要求,官方建议生产环境预留至少 12GB 内存。对于开发测试,适当调整 JVM 参数后,4-8GB 内存也可运行。
接下来是版本选择。Apache RocketMQ 4.x 系列已停止维护,社区主推 5.x 系列,它引入了新的轻量级 SDK、消息轨迹、多协议支持等特性。本文将以最新的稳定版 5.5.0 为例进行部署。请前往 Apache 官网或镜像站下载二进制发布包。

二、RocketMQ 核心组件安装与配置
我们将按照标准路径进行安装,通常将 RocketMQ 部署在 /app 或 /opt 目录下。
上传与解压: 将下载的压缩包上传至服务器目标目录,例如
/app/rocketmq。
mkdir -p /app/rocketmq
cd /app/rocketmq
wget https://dist.apache.org/repos/dist/release/rocketmq/5.5.0/rocketmq-all-5.5.0-bin-release.zip
ln -s /app/rocketmq/rocketmq-all-5.5.0-bin-release /app/rocketmq/rocketmq5.5.0添加rocketmq的环境变量
echo 'export ROCKETMQ_HOME=/app/rocketmq/rocketmq5.5.0
export PATH=$ROCKETMQ_HOME/bin:$PATH' >> /etc/profile
source /etc/profile2. 关键配置调整: RocketMQ 的启动脚本默认预设了较大的 JVM 堆内存,如果服务器资源有限,需要手动调整,以避免启动失败。
修改 NameServer 启动脚本 (
runserver.sh): 主要调整JAVA_OPT中的-Xms,-Xmx,-Xmn参数。同时,务必确认JAVA_HOME变量指向正确的 JDK 安装路径。
vi /app/rocketmq/rocketmq5.5.0/bin/runserver.sh
which java

修改 Broker 启动脚本 (
runbroker.sh): 同样调整内存参数和JAVA_HOME。
vim /app/rocketmq/rocketmq5.5.0/bin/runbroker.sh

3. 配置 Broker 配置文件: 我们需要创建一个自定义的 broker.conf 文件。
vi /app/rocketmq/rocketmq/conf/broker.conf
namesrvAddr = 10.20.30.18:9876
brokerIP1 = 10.20.30.18
三、服务启动、验证与系统集成
配置完成后,即可启动 RocketMQ 服务。建议先创建统一的日志目录。
mkdir /var/log/rocketmq
启动与验证流程:
启动 NameServer: NameServer 是轻量级的服务发现组件,需要首先启动。
#启动namesrv服务
nohup sh /app/rocketmq/rocketmq5.5.0/bin/mqnamesrv > /var/log/rocketmq/nameserver.log 2>&1 &
#启动broker服务
nohup sh /app/rocketmq/rocketmq5.5.0/bin/mqbroker -n 0.0.0.0:9876 autoCreateTopicEnable=true >/var/log/rocketmq/broker.log 2>&1 &
启动 Broker: 指定刚才创建的配置文件启动 Broker。
使用 jps 命令或查看日志可以验证服务是否成功启动。
jps
如果需要关闭服务,可以使用提供的脚本:
#关闭namesrv服务
/app/rocketmq/rocketmq5.5.0/bin/mqshutdown namesrv
#关闭broker服务
/app/rocketmq/rocketmq5.5.0/bin/mqshutdown broker
3. 配置系统服务(开机自启): 为了生产环境稳定性,建议将 RocketMQ 注册为 systemd 服务。
创建 NameServer 服务文件。
vim /etc/systemd/system/mqnamesrv.service
[Unit]
Description=RocketMQ Nameserver
After=network.target
[Service]
Type=simple
Environment=JAVA_OPT_EXT=-Duser.home=/app/rocketmq/rocketmq5.5.0
ExecStart=/app/rocketmq/rocketmq5.5.0/bin/mqnamesrv
ExecStop=/app/rocketmq/rocketmq5.5.0/bin/mqshutdown namesrv
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
(2) 启动 NameServer 服务
#加载配置文件
systemctl daemon-reload
#启动
systemctl start mqnamesrv
#设置开机自启
systemctl enable mqnamesrv创建 Broker 服务文件。
vim /etc/systemd/system/mqbroker.service
[Unit]
Description=RocketMQ Broker And Proxy
After=network.target
[Service]
Type=simple
Environment=JAVA_OPT_EXT=-Duser.home=/app/rocketmq/rocketmq5.5.0
ExecStart=/app/rocketmq/rocketmq5.5.0/bin/mqbroker -n localhost:9876 -c /app/rocketmq/rocketmq5.5.0/conf/broker.conf --enable-proxy
ExecStop=/app/rocketmq/rocketmq5.5.0/bin/mqshutdown broker
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target启动 broker + proxy 服务
#加载配置文件
systemctl daemon-reload
#启动
systemctl start mqbroker
#设置开机自启
systemctl enable mqbrokerRocketMQ Dashboard部署
Jar包方式部署
需要安装maven
RocketMQ源代码中并没有提供Dashboard,但是有一个Rocket的社区扩展项目中提供了一个Dashboard
源码地址:apache/rocketmq-dashboard
下载并解压,切换至源码目录 rocketmq-dashboard-master/
wget https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-2.0.0.zip
unzip rocketmq-dashboard-2.0.0.zip
cd rocketmq-dashboard-rocketmq-dashboard-2.0.0下载下来后,进入其中的rocket-console目录,使用maven进行编译,maven需要自行安装
mvn clean package -Dmaven.test.skip=true编译完成

编译成功

编译完成后,获取target下的jar包,就可以直接执行,在rocketmq-dashboard-rocketmq-dashboard-2.0.0/target目录下

前台运行测试是否启动
java -Xms256m -Xmx256m -jar rocketmq-dashboard-2.0.0.jar --server.port=8082
Dashboard 访问
使用浏览器输入 http://<服务器IP>:8082 ,即可打开页面。

创建systemd启动文件
vim /etc/systemd/system/mqdashboard.service
[Unit]
Description=RocketMQ Dashboard
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/java -Xms256m -Xmx256m -jar /app/rocketmq/rocketmq5.5.0/rocketmq-dashboard-2.0.0.jar --server.port=8082
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target启动 Dashboard 服务
#加载配置文件
systemctl daemon-reload
#启动
systemctl start mqdashboard
#设置开机自启
systemctl enable mqdashboard