今天剛開始學 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
這兩個進程啦~