一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

银河麒麟下如何安装和配置RocketMQ

时间:2026-08-06 08:34:50 编辑:袖梨 来源:一聚教程网

在银河麒麟系统安装RocketMQ需使用OpenJDK 8和4.9.4版本,修改runbroker.sh与runserver.sh的JVM内存参数(如-Xms512m -Xmx512m),配置brokerIP1为本机实际IP,开放9876端口,启动NameServer和Broker后通过tools.sh验证消息收发。

在银河麒麟操作系统上安装和配置RocketMQ,需适配国产化环境的JDK版本、内存限制与ARM/海光CPU架构特性,避免因JVM参数不当或端口未开放导致服务启动失败或无法远程访问。

准备环境与下载适配版本

确认系统已安装OpenJDK 8(银河麒麟V10默认自带),执行java -version验证输出含openjdk version "1.8";若未安装,先运行yum install java-1.8.0-openjdk-devel

前往Apache归档库下载RocketMQ 4.9.4(【OpenJDK 8唯一稳定兼容版本】),地址:https://www.php.cn/link/fb37f9064da23d9ce6153774d6b3e8d0;务必选择rocketmq-all-4.9.4-bin-release.zip,不可用5.x系列——该版本强制要求JDK 11+,在麒麟V10 SP2上会直接报UnsupportedClassVersionError退出。

将压缩包上传至/usr/local目录,执行unzip rocketmq-all-4.9.4-bin-release.zip && mv rocketmq-all-4.9.4-bin-release rocketmq

配置JVM内存参数(关键避坑步骤)

银河麒麟虚拟机或低配物理机常因默认8G堆内存触发OOM,必须手动调小:

进入/usr/local/rocketmq/bin目录,用vi runbroker.sh修改第38行左右的JAVA_OPT变量:

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"——这是4G内存机器的安全值;若为2G内存,需进一步降至-Xms256m -Xmx256m,否则mqbroker启动后立即静默退出,无任何错误日志。

同目录下编辑runserver.sh,将原-Xms4g -Xmx4g改为-Xms256m -Xmx256m;NameServer对内存不敏感,但过大会抢占Broker资源。

启动NameServer并验证

第一步:执行cd /usr/local/rocketmq && nohup sh bin/mqnamesrv &

第二步:立即查看启动日志tail -f ~/logs/rocketmqlogs/namesrv.log,等待出现The Name Server boot success.字样(通常3–5秒),此时进程已就绪。

第三步:检查端口是否监听netstat -tuln | grep 9876,若无输出,说明防火墙拦截——执行sudo firewall-cmd --permanent --add-port=9876/tcp && sudo firewall-cmd --reload放行。

配置并启动Broker

方法一:单机快速启动(开发测试适用)

直接执行nohup sh bin/mqbroker -n localhost:9876 &,Broker会使用默认配置监听本地9876端口;但此时外部客户端无法连接,因brokerIP1默认为内网地址或127.0.0.1

方法二:生产环境必配外网IP(关键)

编辑/usr/local/rocketmq/conf/broker.conf,在文件末尾新增两行:

namesrvAddr=localhost:9876

brokerIP1=192.168.1.100——此处192.168.1.100必须替换为本机实际对外IP(用ip a查ens3等主网卡的inet地址);【漏填brokerIP1将导致远程Producer连接超时】

保存后执行nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &启动。

验证Broker日志tail -f ~/logs/rocketmqlogs/broker.log,看到The broker boot success.即成功。

测试消息收发连通性

第一步:设置环境变量export NAMESRV_ADDR=localhost:9876

第二步:发送测试消息sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer,终端应输出多行SendResult [sendStatus=SEND_OK, ...]

第三步:接收测试消息sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer,几秒内打印出相同数量的Receive New Messages:日志,按Ctrl+C终止。

这一步通过即证明NameServer与Broker通信正常,基础消息链路已打通。

热门栏目