Linux下JDK11和RocketMQ使用

Posted 曱甴崽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下JDK11和RocketMQ使用相关的知识,希望对你有一定的参考价值。

没用过Linux,真不敢称其为大师,不知top、scp、ifconfig,心里确实有点慌,为了引入Linux,我们先玩点实用的,从RocketMQ使用开始!
准备: RHEL7.6/VMware

难度:新手--战士--老兵--大师

目标:JDK11下安装并调试RocketMQ4.5.2

步骤:
1,虚拟机、RHEL 下载安装、网络配置、YUM,略。

2,开启虚拟机与window共享,设置:
RHEL运行后,root下执行,我这里都是用root用户执行,没有使用sudo来操作,为啥?目的就是实验功能,避开因各种linux权限问题导致的异常。也强烈建议使用root操作,Linux的权限可以另外单独去研究。
开启共享文件夹功能命令:
 
   
   
 
#mkdir -p /mnt/hgfs
#vmhgfs-fuse .host:/ /mnt/hgfs
挂载共享文件夹到/mnt/hgfs命令:

Linux下JDK11和RocketMQ使用

 
   
   
 
设置每次重启之后想让系统自动挂载 命令:
 
   
   
 
#vim /etc/fstab
运行后最后一行添加:

Linux下JDK11和RocketMQ使用


3,进入共享目录:

 
   
   
 
#ls /mnt/hgfs/00sharetoVM/
以下为共享文件夹内容示例, 这里我已经下载好JDK/RocketMQ/maven,版本见文件名:

Linux下JDK11和RocketMQ使用


4,/usr文件夹下放置这些文件,使用cp命令移动到这些对应的文件夹下,使并用tar命令解压gz文件,unzip命令解压zip文件,

Linux下JDK11和RocketMQ使用


5,确认下jdk和maven的目录:

Linux下JDK11和RocketMQ使用


6,配置maven环境变量,简单理解即linux环境变量,设置命令:

#vim /etc/profile
设置示例如下,其实 rocketmq_home 目前还没生成,提前设置好而已:

Linux下JDK11和RocketMQ使用

注意退出vim后执行,使配置生效命令:
#source /etc/profile
验证下JDK安装是否成功( 注意如果linux自带了JDK,请注意先删除,方法参考第17点 ):

Linux下JDK11和RocketMQ使用

验证下maven 安装是否成功

Linux下JDK11和RocketMQ使用


7.进入rocket源码目录,使用maven编译rocket:

Linux下JDK11和RocketMQ使用


8.等待直到编译成功提示:

[INFO] BUILD SUCCESS

[INFO] ---------------------------------------------------

[INFO] Total time: 52.856 s


9.这里因JDK11兼容问题,修改启动脚本,进入编译后的rocket目录:
 
   
   
 
[root@localhost bin]# pwd

/usr/rocketmq/rocketmq-all-4.5.2-source-release/distribution/target/rocketmq-4.5.2/rocketmq-4.5.2/bin


10,修改 runserver.sh/脚本 命令:
#vim runserver.sh
r_exit (){echo "ERROR: $1 !!"exit 1}
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java[ ! -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)!"
export JAVA_HOMEexport JAVA="$JAVA_HOME/bin/java"export BASE_DIR=$(dirname $0)/..export CLASSPATH=${BASE_DIR}/lib/rocketmq-namesrv-4.5.2.jar:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}#export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}#echo "BASE_DIR:$BASE_DIR"#echo "CLASSPATH:$CLASSPATH"
#===========================================================================================# JVM Configuration#===========================================================================================JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"JAVA_OPT="${JAVA_OPT} -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8"JAVA_OPT="${JAVA_OPT} -verbose:gc -Xlog:gc:/dev/shm/rmq_srv_gc.log"JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

$JAVA ${JAVA_OPT} $@
注意:以上内容去掉了#开头的注释内容!

11,修改 runbroker.sh脚本命令:
#vim runbroker.sh
r_exit (){ echo "ERROR: $1 !!" exit 1}
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java[ ! -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)!"
export JAVA_HOMEexport JAVA="$JAVA_HOME/bin/java"export BASE_DIR=$(dirname $0)/..export CLASSPATH=${BASE_DIR}/lib/rocketmq-broker-4.5.2.jar:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
#===========================================================================================# JVM Configuration#===========================================================================================JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"JAVA_OPT="${JAVA_OPT} -verbose:gc -Xlog:gc:/dev/shm/mq_gc_%p.log"JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
numactl --interleave=all pwd > /dev/null 2>&1if [ $? -eq 0 ]then if [ -z "$RMQ_NUMA_NODE" ] ; then numactl --interleave=all $JAVA ${JAVA_OPT} $@ else numactl --cpunodebind=$RMQ_NUMA_NODE --membind=$RMQ_NUMA_NODE $JAVA ${JAVA_OPT} $@ fielse $JAVA ${JAVA_OPT} $@fi~
注意:以上内容去掉了#开头的注释内容!

12,NameServer启动命令,如果不在脚本当前目录,需加上 .sh 文件所在路径:
#sh mqnamesrv
成功示例如下: 

Linux下JDK11和RocketMQ使用


Linux下JDK11和RocketMQ使用

成功示例如下:

Linux下JDK11和RocketMQ使用

14,window中下载 rocketmq-console项目,即前端管理界面,下载地址: https://github.com/apache/rocketmq-extern als
idea打开后修改pom文件(JDK11),JDK1.8无需修改:

Linux下JDK11和RocketMQ使用

修改properties文件,因为我是要放到linux上运行,即是localhost了,如果放window,即设置为虚拟机ip:
server.port=8181

rocketmq.config.namesrvAddr=127.0.0.1:9876

mvn编译打包:
mvn clean package -Dmaven.test.skip=true

15,再将jar放到linux中使用命令 java -jar XXX 运行,window中打开访问地址,注意url地址中IP是虚机的:


16, 注意事项:JDK11和JDK1.8版本环境要区分清楚,
linux要关闭防火墙或打开端口,关闭命令:
#systemctl stop firewalld
可能的错误提示,无法连接到远程地址:

17,删除旧版JDK,先查看下:
#rpm -qa | grep jdk
删除命令,将上面列出的rpm包名都 yum remove 掉,以下为示例:
#yum -y remove java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

结束收工!

以上是关于Linux下JDK11和RocketMQ使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux 下安装 RocketMQ

Linux 下安装 RocketMQ

Linux 下安装 RocketMQ

Apache RocketMQ:Linux下的配置和启动

RocketMq: Linux环境-单机部署和主从集群部署

linux安装rocketMq(包括安装maven,JDK)