news 2026/7/7 9:31:47

不用Docker也能跑通消息队列:Linux原生部署RocketMQ实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不用Docker也能跑通消息队列:Linux原生部署RocketMQ实战

🔥承渊政道:个人主页

❄️个人专栏:《C语言基础语法知识》 《数据结构与算法》 《C++知识内容》 《Linux系统知识》 《算法刷题指南》 《测评文章活动推广》 《大模型语言路线学习》 《MySQL数据库学习》 《Python知识内容》

✨逆境不吐心中苦,顺境不忘来时路!✨
🎬 博主简介:

很多开发者第一次接触消息队列时,最容易卡住的并不是概念,而是环境部署.RocketMQ本身能力很强,但如果NameServer、Broker、JDK路径、启动参数和内存配置没有处理好,服务很可能还没开始验证消息收发,就先在启动阶段报错.对于学习原理、开发测试或轻量联调来说,先在Linux上跑通一套单机RocketMQ环境,是比较稳妥的起点.它不需要一上来就搭集群,也不必急着接入复杂业务,只要先理解NameServer和Broker之间的关系,再完成基础启动和验证,后续扩展就会清晰很多.RocketMQ的核心组件并不复杂.NameServer负责维护路由信息,Broker负责承载消息存储和转发,客户端通过NameServer找到可用Broker后再进行消息发送和消费.只要这条链路先跑通,后面接Spring Boot、做延迟消息、事务消息或集群部署,都会有更明确的基础.本文将从JDK环境检查开始,演示RocketMQ二进制包上传、解压、目录整理、启动脚本参数调整、broker.conf配置、NameServer与Broker启动验证,再补充systemd开机自启动配置.最后还会通过 cpolar 创建TCP公网地址,把本地9876端口映射出去,方便外部服务器或异地测试环境连接NameServer.这样不仅能完成本机部署,也能进一步验证跨网络访问RocketMQ的基本流程.


目录

  • 1.前提条件
  • 2.安装RocketMQ
  • 3.配置RocketMQ
    • 3.1修改runserver.sh和runbroker.sh启动脚本
    • 3.2新增broker.conf配置信息
    • 3.3启动关闭rocketmq
  • 4.配置开机自启动
  • 5.安装cpolar内网穿透工具
  • 6.配置公网地址
  • 7.保留固定TCP公网地址
  • 8.总结

1.前提条件

首先需要安装jdk

java-version

下载RocketMQ的源码包以及运行包

RocketMQ建议的运行环境需要至少12G的内存.

关于RocketMQ的版本: 我们这里采用最新的5.3.4版本.

这里需要小伙伴注意一下,4.x的系列版本已经停止了维护.这意味着目前已经不建议使用4.x的版本了.


2.安装RocketMQ

将下载后的文件上传到/app/rocketmq

mkdir-procketmqcdrocketmq/

解压该文件:

unziprocketmq-all-5.3.4-bin-release.zip

修改rocketmq文件名:

mvrocketmq-all-5.3.4-bin-release/ rocketmq


3.配置RocketMQ

3.1修改runserver.sh和runbroker.sh启动脚本

修改runserver.sh脚本:

vi/app/rocketmq/rocketmq/bin/runserver.sh

将原来的参数就改为红框内参数,如果你的机器内存够大这一步可以不配置:

jdk路径必须修改为自己的jdk路径:

whichjava

修改runbroker.sh脚本:

vi/app/rocketmq/rocketmq/bin/runbroker.sh

将原来的参数就改为红框内参数,如果你的机器内存够大这一步可以不配置:

jdk路径必须修改为自己的jdk路径:


3.2新增broker.conf配置信息

编辑broker.conf配置文件:

vi/app/rocketmq/rocketmq/conf/broker.conf namesrvAddr=localhost:9876 brokerIP1=localhost


3.3启动关闭rocketmq

创建日志目录:

mkdir-p/data/logs/rocketmq

启动命令:

#启动namesrv服务nohupsh/app/rocketmq/rocketmq/bin/mqnamesrv>/data/logs/rocketmq/nameserver.log&#启动broker服务nohupsh/app/rocketmq/rocketmq/bin/mqbroker-nlocalhost:9876autoCreateTopicEnable=true>/data/logs/rocketmq/broker.log&

验证是否启动成功:

jps

关闭命令:

#关闭namesrv服务/app/rocketmq/rocketmq/bin/mqshutdown namesrv#关闭broker服务/app/rocketmq/rocketmq/bin/mqshutdown broker


4.配置开机自启动

编写namesrv服务:

#创建配置文件vi/etc/systemd/system/rocketmqnamesrv.service#添加如下内容[Unit]Description=rocketmq - nameserverDocumentation=rocketmq_nameserverAfter=network.target[Service]Type=sampleUser=rootExecStart=/app/rocketmq/rocketmq/bin/mqnamesrvExecReload=/bin/kill-sHUP$MAINPIDExecStop=/bin/kill-sQUIT$MAINPIDRestart=0LimitNOFILE=65535[Install]WantedBy=multi-user.target

编写broker服务:

#创建配置文件vi/etc/systemd/system/rocketmqbroker.service#添加如下内容[Unit]Description=rocketmq - brokerDocumentation=rocketmq_brokerAfter=network.target[Service]Type=sampleUser=rootExecStart=/app/rocketmq/rocketmq/bin/mqbroker-nlocalhost:9876 /app/rocketmq/rocketmq/conf/broker.confExecReload=/bin/kill-sHUP$MAINPIDExecStop=/bin/kill-sQUIT$MAINPIDRestart=0LimitNOFILE=65535[Install]WantedBy=multi-user.target

此时rocketmq是关闭状态,使用systemctl 方式启动测试:

#依次执行启动namesrvsystemctl daemon-reload systemctlenablerocketmqnamesrv.service systemctl start rocketmqnamesrv.service systemctl status rocketmqnamesrv.service#依次执行启动brokersystemctl daemon-reload systemctlenablerocketmqbroker.service systemctl start rocketmqbroker.service systemctl status rocketmqbroker.service

你已在内网Linux服务器上部署了Apache RocketMQ,执行mqnamesrv和mqbroker成功启动了消息服务.但默认情况下,这些服务仅监听本地或局域网,外网客户端无法连接——即使你只是想从公司网络外发送一条测试消息,也会因网络隔离而失败.

此时,无需申请公网IP或配置复杂端口映射,只需借助cpolar内网穿透工具,将RocketMQ的关键端口安全暴露到公网.一旦隧道建立,任何外网设备都能像在内网一样,直接连接并使用你刚刚启动的RocketMQ服务.


5.安装cpolar内网穿透工具

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网.即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境.

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurlhttps://get.cpolar.sh|sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudosystemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理.


6.配置公网地址

通过配置,你可以在本地 WSL 或 Linux 系统上运行 SSH 服务,并通过 Cpolar 将其映射到公网,从而实现从任意设备远程连接开发环境的目的.

  • 隧道名称:可自定义,本例使用了:rocketmq,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:9876
  • 端口类型:随机临时TCP端口
  • 地区:China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在终端中访问即可.

  • tcp 表示使用的协议类型
  • 2.tcp.cpolar.top是 Cpolar 提供的域名
  • 11242是随机分配的公网端口号

现在我们用另一台虚拟机启动一下我们的rocketmq:

nohupsh/app/rocketmq/rocketmq/bin/mqbroker-n2.tcp.cpolar.top:11242autoCreateTopicEnable=true>/data/logs/rocketmq/broker.log&

如图可见 启动成功:


7.保留固定TCP公网地址

使用cpolar为其配置TCP地址,该地址为固定地址,不会随机变化.

选择区域和描述:有一个下拉菜单,当前选择的是“China Top”.
右侧输入框,用于填写描述信息.
保留按钮:在右侧有一个橙色的“保留”按钮,点击该按钮可以保留所选的TCP地址.
列表中显示了一条已保留的TCP地址记录.

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道rocketmq,点击右侧的编辑.

修改隧道信息,将保留成功的TCP端口配置到隧道中.

  • 端口类型:选择固定TCP端口
  • 预留的TCP地址:填写保留成功的TCP地址

点击更新.

创建完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的TCP地址.

这样我们的地址就永远不会发生变化啦!


8.总结

完成部署后,一套基础的RocketMQ单机环境就可以在Linux服务器上运行起来.NameServer先启动,Broker再连接NameServer注册路由信息,通过jps和日志确认进程正常后,就具备了后续消息收发测试的基础.

这类原生部署方式适合用来理解RocketMQ的运行结构.相比直接使用封装好的容器环境,手动配置启动脚本、JVM参数、Broker配置和systemd服务,可以更直观看到每个组件在整个消息队列链路中的作用.

配置 cpolar 后,RocketMQ的NameServer端口也可以被外部网络访问.随机TCP端口适合临时验证,固定TCP地址更适合长期联调,避免每次地址变化后都要重新修改客户端或Broker连接配置.

需要注意的是,RocketMQ并不建议在没有认证、隔离和访问控制的情况下长期直接暴露到公网.公网测试可以用于开发联调,但正式环境应结合网络白名单、防火墙、安全组、ACL权限和生产级Broker配置一起规划.

RocketMQ负责消息通信,Linux原生部署帮助理解底层运行方式,cpolar负责打通跨网络测试入口.当这几部分组合起来后,开发者就能从"本机能启动"进一步走到"外部环境也能连接",为后续集成业务系统和扩展集群打下基础.


🚀真正的勇者不是流泪的人,而是含泪奔跑的人!

敬请期待下一篇文章内容


每日心灵鸡汤: 不是目标决定结果,而是结构决定人生!

很多人以为,目标决定结果,所以拼命盯着目标.但真正决定结果的,从来不是目标,而是结构.目标只是方向,属于不可控的外部变量;今天涨多少粉、赚多少钱、瘦多少斤,都不是你能直接控制的.而结构决定的是,你每天是否会持续做那些能够影响结果的动作.当一个人的行动围绕不可控的结果建立,就容易陷入焦虑、拖延和放弃;当行动围绕可控的系统建立,能量就会不断流向输出、反馈和修正.结构决定系统,系统决定行动,行动产生反馈,反馈不断优化位置,最终推动结果自然发生.所以,真正强大的人,不是每天追着目标跑,而是不断优化自己的结构,让正确的事情每天都能持续发生.

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

【计算机毕业设计】基于Spring Boot 的疫苗接种平台设计及实现

1.系统介绍随着公共卫生信息化建设的推进,传统疫苗接种模式存在信息不对称、预约流程繁琐、管理效率低等问题,难以满足民众便捷接种和医疗机构精细化管理的需求。在此背景下,本研究基于 Spring Boot 框架设计并实现疫苗接种平台,旨…

作者头像 李华
网站建设 2026/7/7 9:28:49

JDK Synchronizers 设计及工作原理与教程

针对 JDK 同步器(Synchronizers),从设计思想、核心工作原理、分类与使用教程三个维度,为你构建一份系统性的技术指南。一、 总体设计思想:AQS 框架JDK 中几乎所有的同步器(ReentrantLock、Semaphore、Count…

作者头像 李华
网站建设 2026/7/7 9:24:43

移动端微任务平台中的任务分级与动态定价模型——以帮帮星球为例

本文为通用技术分析,基于行业公开信息进行逻辑推演,不针对任何特定平台,不构成使用推荐。一、引言移动端微任务平台在连接任务发布方与执行用户的过程中,面临一个核心工程问题:如何对不同复杂度的任务进行合理分级&…

作者头像 李华
网站建设 2026/7/7 9:20:38

如何快速部署OBS AI背景移除插件:专业级虚拟绿幕实战指南

如何快速部署OBS AI背景移除插件:专业级虚拟绿幕实战指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https…

作者头像 李华