承渊政道个人主页❄️个人专栏:《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.安装RocketMQ3.配置RocketMQ3.1修改runserver.sh和runbroker.sh启动脚本3.2新增broker.conf配置信息3.3启动关闭rocketmq4.配置开机自启动5.安装cpolar内网穿透工具6.配置公网地址7.保留固定TCP公网地址8.总结1.前提条件首先需要安装jdkjava-version下载RocketMQ的源码包以及运行包RocketMQ建议的运行环境需要至少12G的内存.关于RocketMQ的版本 我们这里采用最新的5.3.4版本.这里需要小伙伴注意一下,4.x的系列版本已经停止了维护.这意味着目前已经不建议使用4.x的版本了.2.安装RocketMQ将下载后的文件上传到/app/rocketmqmkdir-procketmqcdrocketmq/解压该文件unziprocketmq-all-5.3.4-bin-release.zip修改rocketmq文件名mvrocketmq-all-5.3.4-bin-release/ rocketmq3.配置RocketMQ3.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 namesrvAddrlocalhost:9876 brokerIP1localhost3.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:9876autoCreateTopicEnabletrue/data/logs/rocketmq/broker.log验证是否启动成功jps关闭命令:#关闭namesrv服务/app/rocketmq/rocketmq/bin/mqshutdown namesrv#关闭broker服务/app/rocketmq/rocketmq/bin/mqshutdown broker4.配置开机自启动编写namesrv服务#创建配置文件vi/etc/systemd/system/rocketmqnamesrv.service#添加如下内容[Unit]Descriptionrocketmq - nameserverDocumentationrocketmq_nameserverAfternetwork.target[Service]TypesampleUserrootExecStart/app/rocketmq/rocketmq/bin/mqnamesrvExecReload/bin/kill-sHUP$MAINPIDExecStop/bin/kill-sQUIT$MAINPIDRestart0LimitNOFILE65535[Install]WantedBymulti-user.target编写broker服务#创建配置文件vi/etc/systemd/system/rocketmqbroker.service#添加如下内容[Unit]Descriptionrocketmq - brokerDocumentationrocketmq_brokerAfternetwork.target[Service]TypesampleUserrootExecStart/app/rocketmq/rocketmq/bin/mqbroker-nlocalhost:9876 /app/rocketmq/rocketmq/conf/broker.confExecReload/bin/kill-sHUP$MAINPIDExecStop/bin/kill-sQUIT$MAINPIDRestart0LimitNOFILE65535[Install]WantedBymulti-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 cpolarCpolar安装和成功启动服务后,在浏览器上输入虚拟机主机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是随机分配的公网端口号现在我们用另一台虚拟机启动一下我们的rocketmqnohupsh/app/rocketmq/rocketmq/bin/mqbroker-n2.tcp.cpolar.top:11242autoCreateTopicEnabletrue/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负责打通跨网络测试入口.当这几部分组合起来后,开发者就能从本机能启动进一步走到外部环境也能连接,为后续集成业务系统和扩展集群打下基础.真正的勇者不是流泪的人,而是含泪奔跑的人!敬请期待下一篇文章内容每日心灵鸡汤: 不是目标决定结果,而是结构决定人生!很多人以为,目标决定结果,所以拼命盯着目标.但真正决定结果的,从来不是目标,而是结构.目标只是方向,属于不可控的外部变量;今天涨多少粉、赚多少钱、瘦多少斤,都不是你能直接控制的.而结构决定的是,你每天是否会持续做那些能够影响结果的动作.当一个人的行动围绕不可控的结果建立,就容易陷入焦虑、拖延和放弃;当行动围绕可控的系统建立,能量就会不断流向输出、反馈和修正.结构决定系统,系统决定行动,行动产生反馈,反馈不断优化位置,最终推动结果自然发生.所以,真正强大的人,不是每天追着目标跑,而是不断优化自己的结构,让正确的事情每天都能持续发生.
不用Docker也能跑通消息队列:Linux原生部署RocketMQ实战
发布时间:2026/7/7 9:31:55
承渊政道个人主页❄️个人专栏:《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.安装RocketMQ3.配置RocketMQ3.1修改runserver.sh和runbroker.sh启动脚本3.2新增broker.conf配置信息3.3启动关闭rocketmq4.配置开机自启动5.安装cpolar内网穿透工具6.配置公网地址7.保留固定TCP公网地址8.总结1.前提条件首先需要安装jdkjava-version下载RocketMQ的源码包以及运行包RocketMQ建议的运行环境需要至少12G的内存.关于RocketMQ的版本 我们这里采用最新的5.3.4版本.这里需要小伙伴注意一下,4.x的系列版本已经停止了维护.这意味着目前已经不建议使用4.x的版本了.2.安装RocketMQ将下载后的文件上传到/app/rocketmqmkdir-procketmqcdrocketmq/解压该文件unziprocketmq-all-5.3.4-bin-release.zip修改rocketmq文件名mvrocketmq-all-5.3.4-bin-release/ rocketmq3.配置RocketMQ3.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 namesrvAddrlocalhost:9876 brokerIP1localhost3.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:9876autoCreateTopicEnabletrue/data/logs/rocketmq/broker.log验证是否启动成功jps关闭命令:#关闭namesrv服务/app/rocketmq/rocketmq/bin/mqshutdown namesrv#关闭broker服务/app/rocketmq/rocketmq/bin/mqshutdown broker4.配置开机自启动编写namesrv服务#创建配置文件vi/etc/systemd/system/rocketmqnamesrv.service#添加如下内容[Unit]Descriptionrocketmq - nameserverDocumentationrocketmq_nameserverAfternetwork.target[Service]TypesampleUserrootExecStart/app/rocketmq/rocketmq/bin/mqnamesrvExecReload/bin/kill-sHUP$MAINPIDExecStop/bin/kill-sQUIT$MAINPIDRestart0LimitNOFILE65535[Install]WantedBymulti-user.target编写broker服务#创建配置文件vi/etc/systemd/system/rocketmqbroker.service#添加如下内容[Unit]Descriptionrocketmq - brokerDocumentationrocketmq_brokerAfternetwork.target[Service]TypesampleUserrootExecStart/app/rocketmq/rocketmq/bin/mqbroker-nlocalhost:9876 /app/rocketmq/rocketmq/conf/broker.confExecReload/bin/kill-sHUP$MAINPIDExecStop/bin/kill-sQUIT$MAINPIDRestart0LimitNOFILE65535[Install]WantedBymulti-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 cpolarCpolar安装和成功启动服务后,在浏览器上输入虚拟机主机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是随机分配的公网端口号现在我们用另一台虚拟机启动一下我们的rocketmqnohupsh/app/rocketmq/rocketmq/bin/mqbroker-n2.tcp.cpolar.top:11242autoCreateTopicEnabletrue/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负责打通跨网络测试入口.当这几部分组合起来后,开发者就能从本机能启动进一步走到外部环境也能连接,为后续集成业务系统和扩展集群打下基础.真正的勇者不是流泪的人,而是含泪奔跑的人!敬请期待下一篇文章内容每日心灵鸡汤: 不是目标决定结果,而是结构决定人生!很多人以为,目标决定结果,所以拼命盯着目标.但真正决定结果的,从来不是目标,而是结构.目标只是方向,属于不可控的外部变量;今天涨多少粉、赚多少钱、瘦多少斤,都不是你能直接控制的.而结构决定的是,你每天是否会持续做那些能够影响结果的动作.当一个人的行动围绕不可控的结果建立,就容易陷入焦虑、拖延和放弃;当行动围绕可控的系统建立,能量就会不断流向输出、反馈和修正.结构决定系统,系统决定行动,行动产生反馈,反馈不断优化位置,最终推动结果自然发生.所以,真正强大的人,不是每天追着目标跑,而是不断优化自己的结构,让正确的事情每天都能持续发生.