RocketMQ锦集:Linux环境下载安装RocketMQ详解| Error NamesrvStartup| rocketmq-store| rocketmq-broker |OutOfMemory

前言

相信有很多小伙伴,看到本篇文章时,已被各种报错折磨的苦不堪言,本文针对这些坑助你一臂之力!

本文以Rocket5.0Maven3.8Jdk1.8为例

RocketMQ需要的安装环境 

1)JDK1.8+=,如果低于1.8会有关于JDK版本过低的提示 (通过java -version命令版本)

2)Maven3.2+= (通过mvn -v命令查看版本)

3)Linux 64位操作系统 (通过uname-a 或者uname  -rcat /proc/version等查看)

4)强烈建议:安装路径建议在一个没有空格的路径,比如/usr/src或者/opt/local等

这个安装环境很重要,否则将你将会踩一些不必要的坑!!! 

一、报错解决方案

官网就有RocketMQ的安装步骤,故本文重点介绍各种报错的解决方案,附带下载安装的详细步骤!

温馨提示:如果你不关心这些错误可以直接跳过,进入安装步骤! 

1.1 编译的时候就报错[ERROR]   mvn <args> -rf :rocketmq-store/broker

官方给出的编译命令是:

mvn -Prelease-all -DskipTests clean install -U  #总是报rocketmq-store或者rocketmq-broker的错误

在命令中追加跳过检查的-Dcheckstyle.skip参数即可:
mvn -Prelease-all -DskipTests -Dcheckstyle.skip clean install -U 

温馨提示:这个错误不是因为jdk版本或者maven版本引起的,具体原因目前不明,关于该错误排查,点击进入查看详情。 

1.2 启动mqnamesrv时报错Error: Could not find or load main class org.apache.rocketmq.namesrv.NamesrvStartup

报错原因:你执行rocketmq命令的位置不对,已rocketmq5.0版本为例

解压路径 /usr/src/rocketmq-all-5.0.0-source-release 

命令执行路径,应该是

/usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/

而你当前执行命令的报错路径,可能是

/usr/src/rocketmq-all-5.0.0-source-release

或者/usr/src/rocketmq-all-5.0.0-source-release/distribution

注:按此方案执行脚本后,仍报这个错误,强烈建议,rm -rf 命令彻底清除解压目录后,重新解压,重新编译! 

错误三:一堆关于memory或者OutOfMemory的提示,error='Cannot allocate memory' (errno=12)

报错原因:安装包中默认的配置需要消耗较大的内存,我们一般是在本地虚拟机中运行的,需要手动修改这几个关于内存配置的几个文件!

runserver.sh、runbroker.sh、tools.sh

这个几个文件所在的位置:

cd /usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin 

注:具体修改过程,在下面的安装步骤中的二.5中有详细介绍(避免文章头重脚轻)!  


特别提醒:

以上三个错误如果按本文给出的方案处理后,仍报错,强烈建议删除解压目录,重新解压,重新配置!!

级联删除命令:rm -rf /usr/src/rocketmq-all-5.0.0-source-release/


¥¥避过这三个坑,基本可以顺利的安装并运行单机版RocketMQ,下面具体介绍安装、配置步骤。¥¥


二、下载安装步骤

2.1 进入官网下载RocketMQ5.0安装包

历史版本下载,点击进入

 如上图所示,点击here后,进入下载界面

如上图所示,点击下载链接后,会自动进入下载。
下载地址:https://dlcdn.apache.org/rocketmq/5.0.0/rocketmq-all-5.0.0-source-release.zip

2.2 上传Linux环境的指定目录

温馨提示:

先用cd命令,切换到软件安装包存放位置,比如根目录下的mypacket便于统一管理

2.2.1)如果你用的是xshell,如下图所示

 2.2.2)如果你用的是FinalShell,如下图所示

2.3 解压到指定目录并编译

查看官方文档的解压、编译

根据官方提示,优化后的命令如下: 

cd # 切换到根目录

cd mypackage # 切换到安装包上传目录

unzip rocketmq-all-5.0.0-source-release.zip -d /usr/src # 解压到指定位置
cd rocketmq-all-5.0.0-source-release  # 切换到解压目录
mvn -Prelease-all -DskipTests  -Dcheckstyle.skip clean install -U #该命令的执行,需提前配置好maven,执行完毕该命令会在当前目录,自动生成target文件夹(该命令的执行少则需耗时5分钟,需耐心等待)
$ cd distribution/target/rocketmq-5.0.0/rocketmq-5.0.0  #mvn编译成功后,即可看到该目录 

温馨提示:

1)用mvn命令编译时,需提前安装并配置好JAVA环境变量和Maven环境变量,否则无法使用mvn命令。

2)官方给出的mvn编译命令可能会报错,需在此基础上添加 -Dcheckstyle.skip参数,跳过检查。

编译成功后看到的界面:

CentOS6.5编译成功界面

CentOS7.9编译成功界面

  

 如下图所示,编译成功后,即可在distribution目录下看到target目录

2.4 配置RocketMQ环境变量

复制图图中的pwd路径(路径尾部的/bin,可以不要)

vim /etc/profile

export ROCKETMQ_HOME=/usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0
export PATH=$PATH:$ROCKETMQ_HOME/bin

注意事项: ROCKETMQ_HOME是解压+编译后的目录,不是解压的根目录!!

source /etc/profile # 使配置文件重新生效

2.5 进入编译后的深层bin目录,分别修改runserver.sh、runbroker.sh

预告:修改这几个配置,是因为,不修改会报内存错误,难以正常启动RocketMQ ,错误如下图所示。

 下面一起来修改一下这些配置!

cd /usr/src/rocketmq-all-5.0.0-source-release/ && ls
cd distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/ && ls
cd bin && ls

温馨提示:

本地虚拟机测试,需进行修改(否则可能会出现Out of Memory Error的错误提示),如果是生产环境,不但不调小,甚至还需要根据需求调大!!!

2.5.1)修改runserver.sh的内存占用

小技巧:按Esc,焦点锁定在需要编辑的行按1yy复制一行,再按p粘贴,然后再按i键,进入编辑。

vim runserver.sh

 #JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

2.5.2)修改runbroker.sh的内存占用

vim runbroker.sh

#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"

先修改这一处,如下图所示,如果继续报内存溢出问题,继续修改

 #JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=1g"

 

2.5.3)修改tools.sh的内存占用(了解,暂不修改)

注意:如果修改前面两个,就不报内存溢出异常,可以不修改tools.sh中的内存占用。

vim tools.sh

 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

注:上方是默认的内存参数1g,可以据需调整为256m 

三、启动、关闭RocketMQ服务

注意:

启动命令使用的是编译后的bin目录下的sh命令,不是解压后的/distribution/bin的sh命令。

/usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin

3.1 启动NameServer

3.1.1)方式一:前台启动服务

jps #查看已启动的java服务
cd /usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/ && ls
sh bin/mqnamesrv # 前台运行,便于查看报错

CentOS6.5启动成功的界面 

CentOS7.9启动成功的界面

启动成功后,可以尝试Ctrl+c停掉服务,然后采用后台启动

3.1.2)方式二:后台启动服务

nohup sh bin/mqnamesrv &  #官网提供的启动方式

3.1.3) 查看 NameServer 启动日志

tail -f ~/logs/rocketmqlogs/namesrv.log

connect remote host[192.168.31.128:9876] success, AbstractBootstrap$PendingRegistrationPromise@73e937cf(success) 

3.2 启动Broker 

1)后台启动broker

sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &

2)查看broker的启动日志

tail -f ~/logs/rocketmqlogs/broker.log

 启动成功的情况下,日志中会包含如下日志:

The broker[%s, 192.168.31.128:10911] boot success...

3.3 发送/接收消息测试

3.3.1)使用tools.sh发送消息

export NAMESRV_ADDR=localhost:9876 #NAMESRV_ADDR环境变量配置
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

会看到大量的:SendResult [sendStatus=SEND_OK, msgId= ... 

下图分别是CentOS6.5和CentOS7.9的执行结果 

 3.3.2)使用tools.sh接收消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

会看到大量的:ConsumeMessageThread_%d Receive New Messages: [MessageExt...

若能正确打印上述日志,则表明单击版 RocketMQ 部署成功!

3.4 Java应用访问RocketMQ服务器,需开放9876防火墙端口

firewall-cmd --zone=public --add-port=9876/tcp --permanent   #开启 9876 端口
firewall-cmd --reload                                                                 #重启防火墙
firewall-cmd --zone=public --list-ports                                      #查看开放的端口 

3.5 关闭NameServer和Broker 

分别通过sh bin/mqshutdown命令,关闭broker和namesrv

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

四、拓展

RockertMQ常用命令

查看集群情况 ./bin//mqadmin clusterList -n 127.0.0.1:9876
查看 broker 状态 ./bin/mqadmin brokerStatus -n 127.0.0.1:9876 -b 172.20.1.138:10911
查看 topic 列表 ./bin/mqadmin topicList -n 127.0.0.1:9876
查看 topic 状态 ./bin/mqadmin topicStatus -n 127.0.0.1:9876 -t MyTopic (换成想查询的 topic)
查看 topic 路由 ./bin/mqadmin topicRoute -n 127.0.0.1:9876 -t MyTopic

总结

本文主要介绍了RocketMQ5.0版的安装和配置,重点介绍了在安装过程中遇到的错误及其解决方案,给后来者的提供一些参考或启示。

总之,如果按照上述步骤,仍不能正常启动服务,简单粗暴rm -rf 彻底删除,重新解压、编译、配置即可。

尾言

本文中各个环节都是反复多次实验,亲测可用,然而RocketMQ是一个庞大的知识点,部分异常的解决方案,可能未能涉及,后期如有发现,会陆续更新。

如果觉得还不错,欢迎点赞收藏或者留言!

附注

1、RocketMQ编译报错:mvn -Prelease-all -DskipTests clean install -U | mvn <goals> -rf :rocketmq-store|broker 

猜你喜欢

转载自blog.csdn.net/xp871038951/article/details/127594948
今日推荐