自己对着网上Rocketmq的教程尝试学了一些,发现很多教程使用的rocket版本比较早,导致安装的时候容易出现很多问题
这里自己对着官方文档和动力节点2023的rocketmq教程尝试装了一下,最终启动成功,这里做下笔记。
1.安装Rocketmq
(1)使用源码安装(不推荐)
在官网快速开始 | RocketMQ (apache.org)上下载rocketmq的源码包,然后在虚拟机上创建一个文件夹rocketmq,进入rocketmq,依次执行
unzip rocketmq-all-5.1.4-source-release.zip
cd rocketmq-all-5.1.4-source-release/
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
cd distribution/target/rocketmq-5.1.4/rocketmq-5.1.4
# 这种做法比较麻烦,之后使用rocketmq也必须进入 rocketmq安装目录/distribution/target/rocketmq-5.1.4/rocketmq-5.1.4才能使用
注意:这里需要使用mvn命令,所以你的虚拟机上必须安装好maven才能执行第三条指令
同时,如果jdk版本过高或者jdk的lib中没有tools.jar,mvn那条指令运行后会报出异常,推荐使用jdk8u_331(我自己测试成功了)
(2)直接使用二进制文件安装(推荐)
在官网快速开始 | RocketMQ (apache.org)上下载rocketmq的二进制包,直接解压就能用了,比使用源码方便很多
# 下载好之后只用解压即可
unzip rocketmq-all-5.1.4-bin-release.zip
cd cd rocketmq-all-5.1.4-bin-release/
2.启动Rocketmq
(1)修改配置信息
首先配置NameServer的环境变量,
#打开配置文件
vi /etc/profile
#在文件末尾添加(localhost可以换成你自己服务器的IP,我用的是本地虚拟机,就直接写localhost了)
export NAMESRV_ADDR=localhost:9876
#source命令,使修改生效
source /etc/profile
启动之前先检查一下虚拟机的内存,最好不要小于4G,因为nameServer默认使用的内存是4g
如果内存实在有限也不要紧,只需要先修改一下nameServer的运行脚本,把Xms和Xmx改小一点
这里我使用的是VSCode的Remote SSH打开的 bin/runServer.sh,可以直接修改,比较方便,使用vim修改也是可以的
同理,接着修改runbroker.sh,把8g改成1g
再然后,进入上一级目录,修改conf/broker.conf文件,添加如下内容
# nameServer地址
namesrvAddr=localhost:9876
# 允许broker自动创建Topic
autoCreateTopicEnable=true
# 虚拟机的IP,这里不能写localhost,因为这个是broker登记到nameServer的地址
# 如果写localhost,那么生产者和消费者拿到的IP就是localhost,无法访问broker
brokerIP1=192.168.238.61
![image-20240105164126767](https://img-blog.csdnimg.cn/img_convert/cbee7106bdaa5fcf34420a4677fb5a4c.png)
(2)启动rocketmq
进入 rocketmq根目录下的bin文件夹,执行下列指令
# nohup可以在后台持久运行,sh是指执行sh文件
nohup sh bin/mqnamesrv &
jps # 查看java进程
jps -l #查看详细信息
# 启动broker,其中 > 表示输出, 比如 "> ../broker.log"表示输出异常信息到../broker.log中
# -c 表示选择配置文件,-c "../conf/broker.conf" 就表示选择"../conf/broker.conf"为配置文件
nohup sh mqbroker -c ../conf/broker.conf > ../broker.log &
还可以下载rocket-dashboard,这是rocketmq提供的查看信息的工具。这里Rocketmq官网给出了下载过程,其实也就是先下载源码,再用maven编译出一个jar包
当然,你也可以用我打包好的jar包,百度网盘链接参上:https://pan.baidu.com/s/1bO1gX-2XgUlsVEWDhZuvgw
提取码:e6ql
#首先回退至rocket-dashboard.jar所在的文件夹
# 启动rocketmq 查看信息用的工具 dashboard,通过--属性 可以动态修改jar包执行时的配置参数
# 这里的server.port其实很熟系。就是SpringBoot中application.properties的属性字段
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar --server.port=5001 --rocketmq.config.namesrvAddr=127.0.0.1:9876 > dashboard.log &
#查看日志
cat dashboard.log
输入jps -l,可以看到进程执行成功
此时在浏览器输入地址 虚拟机IP:5001,就可以看到如下界面:
(3) 查看内存消耗
free -m
# -mh查看的更详细
free -mh
3.报错处理
异常1:mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U 执行失败
观察异常信息发现,报错是说在jdk中没有找到tools.jar这个文件,考虑到可能是jdk版本不对。查询几篇帖子才知道, JDK在11版本以后再以前的基础上做了较大的改动,安装后默认是没有jre的。并且,再JDK8以后,JDK也发生了较大的变化,移除了tools.jar和dt.jar文件,jdk1.5以后连环境变量CLASSPATH都不用配置了。因此,我决定更换成jdk_8u331的版本,这个版本的jdk是有tools.jar的。
首先卸载掉原来的jdk
rpm -qa | grep java | xargs rpm -e --nodeps #卸载原来的jdk
然后去Oracle的官网下载jdk的tar.gz包,但是Oracle访问有时会很慢,这里可以使用百度网盘链接下载:https://pan.baidu.com/s/1-qGXkrjqbYjdIIY4SLPFiQ 提取码:69yk
下载好之后,在虚拟机自定义jdk的存放位置,使用xshell、xftp或者vscode将压缩包上传到该位置,然后再该位置打开终端,依次执行
# tar包进行解压
tar -zxvf jdk-8u331-linux-x64.tar.gz
# rpm包进行安装
rpm ivh jdk-8u331-linux-x64.rpm
配置环境变量才能生效
在管理员权限下,使用vim命令打开环境变量配置文件
vim /etc/profile
打开文件后,按下“i"键,就会进入Insert状态,此时就可以编辑文件了,在文件的末尾写入如下内容:
# jdk1.8_331路径配置
export JAVA_HOME=/usr/lib/jdk1.8_331/jdk1.8.0_331
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
写好之后,先按esc退出insert模式,在按“:wq”就是保存并退出,这样环境变量就配置好了。然后使用
source /etc/profile
该命令可以使文件改变生效,如果发现该命令只在当前会话有效,开启新的shell之后java命令不可用,那么参考异常二。
修改好之后在rocketmq的安装目录处重新执行
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
此时等待maven下载所需包,然后就会看到bulid success标志信息出现(我使用的虚拟机是CentOS7)
异常2:source /etc/profile只在当前会话有效,新开一个回话后马上失效
解决方法
直接在root权限下,执行这个命令
vim ~/.bashrc
在文件的最后添加这个内容:
source /etc/profile
然后保存退出,再执行一次 source /etc/profile,这个问题就解决了
原因分析:参考https://blog.csdn.net/qq_18364087/article/details/134073129