家用住宅主机Linux RocketMQ高吞吐消息队列部署
写在前面
RocketMQ 是阿里巴巴开源的一款分布式消息中间件,以高吞吐、低延迟、可靠投递著称。
很多开发者会在个人云服务器或家用 Linux 主机上搭建它做学习或轻量业务使用。
但家用网络环境(如动态公网IP、防火墙限制、内存偏小)常让新手踩坑。
本文就从零开始,以一台普通家用 Linux 主机为例,带你完整部署并验证 RocketMQ 的消息收发。
部署前要准备哪些东西?
- 一台运行 Linux 的主机:建议 Ubuntu 20.04+ 或 CentOS 7+,内存至少 2GB(RocketMQ 4.x 官方推荐 4GB,但家用测试 2GB 可以跑,需调小 JVM)。
- Java 8 或 11 运行环境:RocketMQ 依赖 JDK。使用命令检查是否已安装:
java -version
如果未安装,以 Ubuntu 为例:
sudo apt update
sudo apt install openjdk-11-jdk -y
- 下载 RocketMQ 二进制包:去 Apache 官网或 GitHub Releases 获取最新稳定版(示例版本号以
4.9.x或5.x为准,本文以 4.9.6 为例)。直接下载:
wget https://archive.apache.org/dist/rocketmq/4.9.6/rocketmq-all-4.9.6-bin-release.zip
- 安装 unzip(如果未安装)
sudo apt install unzip -y
安装和启动 NameServer + Broker
1. 解压并配置环境变量
unzip rocketmq-all-4.9.6-bin-release.zip -d /opt
sudo mv /opt/rocketmq-all-4.9.6-bin-release /opt/rocketmq
编辑 /etc/profile,在末尾添加:
export ROCKETMQ_HOME=/opt/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin
执行 source /etc/profile 使生效。
2. 调整 JVM 参数(家用主机内存不足时的关键步骤)
打开 $ROCKETMQ_HOME/bin/runserver.sh,找到 JAVA_OPT 相关行,修改 -Xms4g -Xmx4g 为 -Xms256m -Xmx512m。
同样修改 $ROCKETMQ_HOME/bin/runbroker.sh,把 -Xms8g -Xmx8g 改为 -Xms256m -Xmx512m。
3. 启动 NameServer
nohup sh mqnamesrv &
查看日志确认启动成功:
tail -f ~/logs/rocketmqlogs/namesrv.log
出现 The Name Server boot success. 说明正常。
4. 启动 Broker
编辑 $ROCKETMQ_HOME/conf/broker.conf,在末尾添加以下配置,以适应家用网络环境:
# 自动创建主题
autoCreateTopicEnable=true
# Broker 监听端口
listenPort=10911
# 若家用主机有动态公网IP,指定内网IP,这里用localhost
brokerIP1=127.0.0.1
然后启动 Broker:
nohup sh mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/broker.conf &
查看日志:
tail -f ~/logs/rocketmqlogs/broker.log
出现 The broker[broker-a, 127.0.0.1:10911] boot success. 即为启动成功。
验证消息收发,体验高吞吐
RocketMQ 自带生产者、消费者客户端工具,可以快速测试。
发送消息
进入 $ROCKETMQ_HOME/bin 目录,执行:
export NAMESRV_ADDR=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
正常会看到一堆“SendResult [sendStatus=SEND_OK, msgId=...]”,说明消息发送成功。
消费消息
保持 NameServer 和 Broker 运行,新开一个终端:
export NAMESRV_ADDR=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
可以看到消费端收到刚刚发送的消息,输出类似“ConsumeMessageThread_1 Receive New Messages: [MessageExt...]”。
至此,你已经在自家 Linux 主机上跑通了 RocketMQ 消息队列。
避坑与高频问题解答
Q1:启动时提示“Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory...”
原因:内存不足。
说明 JVM 分配的 Xms 太大,而物理内存不够。
按照本文第二步调整 runserver.sh 和 runbroker.sh 中的 -Xms 和 -Xmx 即可。
Q2:启动 Broker 后客户端连接不上
检查项:
- 防火墙是否放行了 9876(NameServer)和 10911(Broker)端口:
sudo ufw allow 9876/tcp
sudo ufw allow 10911/tcp
- Broker 配置文件中的
brokerIP1是否设为正确的 IP(家用主机建议用127.0.0.1先做本地测试)。 - 若想对外暴露,需设置公网 IP 并在路由器做端口转发,本文不展开,家用测试建议全本地。
Q3:日志报错“No route info of this topic”
原因:Broker 尚未创建主题(若未启用自动创建)。
确认 autoCreateTopicEnable=true 已添加,并重启 Broker。
Q4:家用主机重启后 RocketMQ 自动启动?
建议用 systemd 服务管理,省去手动启动。
可编写独立的服务文件,这里不赘述,可查找本站“Linux 设置 RocketMQ 开机自启”的文章。
最后
如果你正在处理家用住宅主机上部署 Linux RocketMQ 高吞吐消息队列,建议先按本文步骤完整执行,再根据自己的环境(如公网需求、更大内存)做微调;
遇到异常时优先回看避坑和高频问题部分。
从零到能收发消息,通常只需要十几分钟,这个轻量级的消息中间件就能在你的本地网络里跑起来,为后续学习分布式消息或对接应用打下扎实基础。