服务公告
RocketMQ 消息队列-星耀云
发布时间:2026-04-28 06:01
本文面向运维老兵,实战讲解RocketMQ单节点部署与基本运维操作,覆盖CentOS/RHEL和Ubuntu两大发行版,附带老手才知道的坑点吐槽。搞定消息队列从0到1,省去你到处翻文档的时间。
一、前言
干了10年运维,消息队列这玩意儿要么不用,要么一用就是踩坑无数。RocketMQ阿里系出身,工业级稳定性,但官方文档写得跟学生作业似的,部署文档缺胳膊少腿。今天把10年踩坑经验攒成这篇实战教程,手把手带你从零搭起可用环境,少走三个月弯路。
二、操作步骤
步骤1:环境检查与依赖确认
**CentOS/RHEL 执行:**
$ java -version
openjdk version "1.8.0_322" 64-Bit
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ free -m
total used free shared buff/cache available
Mem: 15938 1234 11234 256 3468 14234
Swap: 4095 0 4095
$ java -version
openjdk version "1.8.0_322" 64-Bit
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
$ free -m
total used free shared buff/cache available
Mem: 15938 1234 11234 256 3468 14234
Swap: 4095 0 4095
搞定这步之后,继续往下看
步骤2:下载RocketMQ二进制包
$ cd /opt $ wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip --2024-01-15 10:30:45-- https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip Resolving archive.apache.org... 140.211.11.136 Connecting to archive.apache.org|140.211.11.136|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 68142321 (65M) [application/zip] Saving to: 'rocketmq-all-4.9.4-bin-release.zip' rocketmq-all-4.9.4-bin-release.zip 100%[===================>] 65.01M 2.1 MB/s in 31s 2024-01-15 10:31:16 (2.09 MB/s) - 'rocketmq-all-4.9.4-bin-release.zip' saved [68142321/81]
$ wget https://mirrors.aliyun.com/apache/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
完成这步之后,就简单了
步骤3:解压并创建软链接
$ unzip rocketmq-all-4.9.4-bin-release.zip $ ln -s /opt/rocketmq-all-4.9.4-bin-release /opt/rocketmq $ ls -la /opt/rocketmq lrwxrwxrwx 1 root root 22 Jan 15 10:32 rocketmq -> /opt/rocketmq-all-4.9.4-bin-release $ ls /opt/rocketmq/ benchmark bin conf lib licenses NOTICE README.md
这一步搞定了,我们继续
步骤4:配置RocketMQ运行参数
**CentOS/RHEL 执行:**
$ vi /opt/rocketmq/bin/runserver.sh
# 找到以下行修改JVM参数
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g"
# 默认-Xms4g -Xmx4g,4G物理机直接OOM,改成512m先跑起来
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
$ vi /opt/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
$ sudo vi /opt/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
$ sudo vi /opt/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
完成这步之后,就简单了
步骤5:启动NameServer
$ cd /opt/rocketmq/bin $ nohup ./mqnamesrv > /var/log/rocketmq-namesrv.log 2>&1 & [1] 15432 $ sleep 3 $ ps aux | grep mqnamesrv | grep -v grep root 15432 0.2 0.0 123456 5678 pts/0 S 10:35 0:00 java -server -Xms512m -Xmx512m -Xmn256m ... $ tail -20 /var/log/rocketmq-namesrv.log 2024-01-15 10:35:23 INFO NamesrvStartup:109 - RocketMQ NameServer starting... 2024-01-15 10:35:23 INFO NamesrvStartup:125 - NameServer bound to 0.0.0.0:9876 2024-01-15 10:35:23 INFO NamesrvStartup:146 - RocketMQ NameServer started successfully
# CentOS/RHEL 防火墙 $ firewall-cmd --permanent --add-port=9876/tcp $ firewall-cmd --reload # Ubuntu 防火墙 $ ufw allow 9876/tcp $ ufw reload