RocketMQ踩坑之Name Server启动问题

今天刚开始学 RocketMQ,在运行的时候 Name Server 就怎么也运行不起来,捣鼓了很长时间才弄好,在这里把解决方法记录下来

版本说明

操作系统:MacOS 10.13.5
RocketMQ版本: 4.5.1

情景复现

下载 rocketmq-all-4.5.1-bin-release.zip 后,使用如下命令解压

unzip rocketmq-all-4.5.1-bin-release.zip

切换目录到 RocketMQ 根目录并启动 Name Server

> cd rocketmq-all-4.5.1-bin-release
> nohup sh bin/mqnamesrv &

这时会返回如下结果

[1] 19430
appending output to nohup.out                                                   
[1]  + 19430 exit 1     nohup sh bin/mqnamesrv

这和我的预期明显是不相符的,而且使用 jps 查看进程也没有 NamesrvStartup

问题分析

使用 cat nohup.out 命令查看 nohup.out 文件,会输出如下信息

ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!

到此问题显而易见了,我使用的是 Mac 系统,当初安装 jdk 的 dmg 文件,安装完成就能用了,一直没有配置环境变量,所以报了这个错误

解决方法

那么我们就来配置一下 java 环境变量:

  1. 通过 /usr/libexec/java_home 命令可以找到已经安装好的 jdk 位置
  2. 通过 vim ~/.bash_profile 命令打开 .bash_profile,如果没有该文件可以通过 touch ~/.bash_profile 命令创建
  3. 添加如下配置,其中 jdk 的位置填入第一步中你自己查找出的 jdk 的位置
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
  1. 使用 source ~/.bash_profile 命令使配置生效

到这里来说应该就可以了,但是我自己配置后启动 RocketMQ 的 Name Server 还是不行,所以我又进行了如下配置,同样没有成功的小伙伴不要着急,继续往下来

  • 打开 RocketMQ 的 bin 目录下的 runserver.shrunbroker.sh,将设置 JAVA_HOME 的第二三行注释掉,把第一行 JAVA_HOME 设置为上面通过命令 /usr/libexec/java_home 获取到的 jdk 的安装目录,如下所示
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
# [ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"

修改后记得保存,再次运行 nohup sh bin/mqnamesrv &nohup sh bin/mqbroker -n localhost:9876 & ,便可以通过 jps 查看到 BrokerStartupNamesrvStartup 这两个进程啦~
RocketMQ踩坑之Name Server启动问题_第1张图片

你可能感兴趣的:(Java)