跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Linux 部署 RocketMQ 及公网穿透实战

Linux 环境下部署 Apache RocketMQ 5.3.4 版本,配置 JDK 及启动脚本,通过 systemd 实现开机自启。为解决外网访问问题,采用内网穿透工具将 Broker 端口映射至公网,支持临时或固定 TCP 地址,实现跨网络远程连接与消息收发。

ServerBase发布于 2026/3/28更新于 2026/10/2189 浏览
Linux 部署 RocketMQ 及公网穿透实战

背景与目标

在 Linux 服务器上部署 RocketMQ 后,内网测试通常顺畅,但外网访问常受网络隔离限制。本文介绍一套从基础部署到利用内网穿透工具实现公网远程连接的完整方案,无需申请公网 IP 或配置复杂端口映射。

前置环境

JDK 安装 确保服务器已安装 JDK,版本建议 1.8 或以上:

java -version

资源要求 RocketMQ 运行环境建议至少 12G 内存。本文采用最新稳定版 5.3.4(4.x 系列已停止维护)。

安装 RocketMQ

将下载的二进制包上传至 /app/rocketmq 目录并解压:

mkdir -p rocketmq && cd rocketmq/
unzip rocketmq-all-5.3.4-bin-release.zip
mv rocketmq-all-5.3.4-bin-release rocketmq

配置与启动

修改启动脚本

编辑 runserver.sh 和 runbroker.sh,根据实际机器内存调整 JVM 参数,并修正 JDK 路径:

vi /app/rocketmq/rocketmq/bin/runserver.sh
# 修改 JAVA_HOME 为实际路径
which java

同理修改 runbroker.sh,确保 JAVA_HOME 指向正确位置。

Broker 配置

创建 broker.conf 配置文件:

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

启动服务

创建日志目录并启动 Namesrv 与 Broker:

mkdir -p /data/logs/rocketmq
nohup sh /app/rocketmq/rocketmq/bin/mqnamesrv > /data/logs/rocketmq/nameserver.log &
nohup sh /app/rocketmq/rocketmq/bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true > /data/logs/rocketmq/broker.log &

验证进程状态:

jps

关闭服务可使用对应 shutdown 命令:

/app/rocketmq/rocketmq/bin/mqshutdown namesrv
/app/rocketmq/rocketmq/bin/mqshutdown broker

开机自启配置

使用 systemd 管理服务,避免手动启动失效。创建 rocketmqnamesrv.service 和 rocketmqbroker.service:

[Unit]
Description=rocketmq-nameserver
After=network.target

[Service]
Type=simple
User=root
ExecStart=/app/rocketmq/rocketmq/bin/mqnamesrv
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

Broker 服务配置类似,注意 ExecStart 中需指定 -n 地址和配置文件路径。加载配置并启动:

systemctl daemon-reload
systemctl enable rocketmqnamesrv.service
systemctl start rocketmqnamesrv.service
systemctl status rocketmqnamesrv.service

公网访问配置

默认情况下 RocketMQ 仅监听本地或局域网。借助内网穿透工具可将关键端口安全暴露到公网。

安装穿透工具

以 cpolar 为例,使用一键脚本安装:

sudo curl https://get.cpolar.sh | sh

检查服务状态:

sudo systemctl status cpolar

隧道配置

登录 Web 管理界面(通常为 ip:9200),新建 TCP 隧道:

  • 隧道名称:自定义(如 rocketmq)
  • 协议:TCP
  • 本地地址:9876
  • 端口类型:随机临时 TCP 端口
  • 地区:China Top

创建成功后,获取生成的公网地址(格式如 tcp.cpolar.top:端口号)。此时可在其他设备通过该地址连接 RocketMQ。

固定公网地址

若需长期稳定访问,可保留固定 TCP 地址:

  1. 在管理界面点击'保留'按钮获取固定端口。
  2. 编辑隧道,将端口类型改为'固定 TCP 端口',填入保留的地址。
  3. 更新配置后,公网地址将不再随机变化。

总结

RocketMQ 的部署本身并不复杂,核心难点在于解决网络隔离问题。通过上述步骤,可实现从基础部署到公网远程访问的全流程打通,适用于开发测试及小型生产场景。

目录

  1. 背景与目标
  2. 前置环境
  3. 安装 RocketMQ
  4. 配置与启动
  5. 修改启动脚本
  6. 修改 JAVA_HOME 为实际路径
  7. Broker 配置
  8. 启动服务
  9. 开机自启配置
  10. 公网访问配置
  11. 安装穿透工具
  12. 隧道配置
  13. 固定公网地址
  14. 总结

更多推荐文章

查看全部
  • AI 大模型入门:AI 产品经理必备知识与落地逻辑
  • 人形机器人 LET 数据集开源:6 万分钟真机实采与多模态技术
  • Linux 基础 IO(三):文件描述符与重定向
  • OSCP 实战:获取并破解 Net-NTLMv2 哈希(下)
  • C++ 智能指针:使用场景、实现原理与内存泄漏防治
  • FPGA 入门指南:从点亮 LED 开始实战
  • 2026 丙午马年元旦祝福程序 Python 实现
  • 前端面试高频场景题汇总
  • C++ 泛型编程与模板技术详解
  • 职业低谷期的自我提升:Python 全栈学习路线与技能进阶
  • 零基础也能做网页?PyWebIO表单快速构建指南(新手必看)
  • AI 赋能原则 10 解读:政府 2.0 与全民智能时代的治理逻辑
  • C++ IO 流与四种类型转换操作符详解
  • 2026 年 3 月 18 日人工智能产业动态:算力、智能体与生态
  • OpenREALM:无人机实时映射框架的技术深度解析
  • ICLR 2024 杰出论文公布:大模型成最大赢家
  • OpenClaw 安装与飞书机器人配置实战指南
  • C++ 手写线程池日志模块:基于策略模式实现
  • 数据结构入门:链表分类详解与带头双向循环链表初始化
  • React 实战:从零构建井字棋游戏

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online