今天刚开始学 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 环境变量:
通过/usr/libexec/java_home
命令可以找到已经安装好的 jdk 位置
通过 vim ~/.bash_profile
命令打开 .bash_profile
,如果没有该文件可以通过 touch ~/.bash_profile
命令创建
添加如下配置,其中 jdk 的位置填入第一步中你自己查找出的 jdk 的位置
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
使用 source ~/.bash_profile
命令使配置生效
到这里来说应该就可以了,但是我自己配置后启动 RocketMQ 的 Name Server 还是不行,所以我又进行了如下配置,同样没有成功的小伙伴不要着急,继续往下来
打开 RocketMQ 的 bin 目录下的runserver.sh
和 runbroker.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
查看到 BrokerStartup
和 NamesrvStartup
这两个进程啦~