天天看点

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

RocketMQ 4.5.1 环境搭建

一、RocketMQ环境搭建

1.1 环境要求

软件名称 版本 下载地址
JDK 11.0.5 下载 提取码:6ksb
Linux64位系统 (CentOS Linux release 7.1503) 下载 提取码:8a9u
安装Maven(使用源码安装rocketmq才需要) 3.2.x 下载 提取码:ymli
RocketMQ 4.5.1 下载 提取码:vhye
注意:
磁盘空间要求:4G+ free  , 向磁盘进行持久化消息操作
           

1.2 安装及启动

1. 在线下载rocketmq(如果不想使用wget下载,可以直接使用上述提供的软件包)
# 下载 
	wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
           
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
2. 解压缩
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
	unzip rocketmq-all-4.5.1-bin-release.zip -d /opt/
           
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
3. 配置环境变量
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

验证搭建结果

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
4. JDK搭建
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
5. 注意:修改脚本(使用jdk8没有问题,使用jdk8以上的版本需要修改脚本,否则虚拟机调优等相关的参数无法使用)

修改如下几个文件:

脚本名称 作用
/opt/rocketmq/bin/runserver.sh 保证正常使用nameserver
/opt/rocketmq/bin/runbroker.sh 保证正常使用broker
/opt/rocketmq/bin/tools.sh 保证正常使用系统的测试工具
步骤一:启动nameserver 出错
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
解决:修改nameserver启动脚本(vi /opt/rocketmq/bin/runserver.sh 修改配置文件)
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#===========================================================================================
# Java Environment Setting
#===========================================================================================
error_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_HOME
export JAVA="$JAVA_HOME/bin/java"
export BASE_DIR=$(dirname $0)/..
export
CLASSPATH=.:${BASE_DIR}/conf:${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib/*
#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=160m"
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 -XX:+PrintGCDetails"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
# JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
#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} [email protected]
           

再次启动:

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

具体修改参数:

vim bin/runserver.sh
	删除
	UseCMSCompactAtFullCollection
	UseParNewGC
	UseConcMarkSweepGC
	修改内存:默认4G,目前虚拟机没有这么大的空间
	JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -
	XX:MetaspaceSize=64mm -XX:MaxMetaspaceSize=160mm"
	-Xloggc修改为-Xlog:gc
           
步骤二:启动broker 出错
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
解决:修改broker(vi /opt/rocketmq/bin/runbroker.sh 修改配置文件)
#!/bin/sh
	# Licensed to the Apache Software Foundation (ASF) under one or more
	# contributor license agreements. See the NOTICE file distributed with
	# this work for additional information regarding copyright ownership.
	# The ASF licenses this file to You under the Apache License, Version 2.0
	# (the "License"); you may not use this file except in compliance with
	# the License. You may obtain a copy of the License at
	#
	#   http://www.apache.org/licenses/LICENSE-2.0
	#
	# Unless required by applicable law or agreed to in writing, software
	# distributed under the License is distributed on an "AS IS" BASIS,
	# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	# See the License for the specific language governing permissions and
	# limitations under the License.
	#===========================================================================================
	# Java Environment Setting
	#===========================================================================================
	error_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_HOME
	export JAVA="$JAVA_HOME/bin/java"
	export BASE_DIR=$(dirname $0)/..
	export CLASSPATH=.${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
	#===========================================================================================
	# JVM Configuration
	#===========================================================================================
	JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
	JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
	JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails"
	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} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
	JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
	JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

	numactl --interleave=all pwd > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
		if [ -z "$RMQ_NUMA_NODE" ] ; then
			numactl --interleave=all $JAVA ${JAVA_OPT} [email protected]
		else
			numactl --cpunodebind=$RMQ_NUMA_NODE --membind=$RMQ_NUMA_NODE $JAVA
			${JAVA_OPT} [email protected]
		fi
	else
		$JAVA ${JAVA_OPT} --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED [email protected]
	fi
	
           

再次运行:

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

重点需要添加的参数:jdk9之后使用引入了模块化

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

具体修改参数:

vim bin/runbroker.sh
	删除:
	PrintGCDateStamps
	PrintGCApplicationStoppedTime
	PrintAdaptiveSizePolicy
	UseGCLogFileRotation
	NumberOfGCLogFiles=5
	GCLogFileSize=30m
           
rocketmq的日志存储位置(方便后续查看rocketmq的执行日志)
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
rocketmq的数据存储位置(方便后续查看rocketmq的存储数据)
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
6. 关闭rocketmq

注意:(顺序)先关闭broker,再关闭nameserver

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
7. 启动NameServer
# 1.启动NameServer
	mqnamesrv
	# 2.查看启动日志
	tail -f /root/logs/rocketmqlogs/namesrv.log
           
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
8. 启动Broker
# 1.启动Broker
	mqbroker -n localhost:9876
	# 2.查看启动日志
	tail -f /root/logs/rocketmqlogs/broker.log
           
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

二、RocketMQ环境测试

注意:使用系统的测试工具,需要修改工具相关配置文件(tools)

vi /opt/rocketmq/bin/tools.sh

#!/bin/sh
	# Licensed to the Apache Software Foundation (ASF) under one or more
	# contributor license agreements. See the NOTICE file distributed with
	# this work for additional information regarding copyright ownership.
	# The ASF licenses this file to You under the Apache License, Version 2.0
	# (the "License"); you may not use this file except in compliance with
	# the License. You may obtain a copy of the License at
	#
	#   http://www.apache.org/licenses/LICENSE-2.0
	#
	# Unless required by applicable law or agreed to in writing, software
	# distributed under the License is distributed on an "AS IS" BASIS,
	# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	# See the License for the specific language governing permissions and
	# limitations under the License.
	#===========================================================================================
	# Java Environment Setting
	#===========================================================================================
	error_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_HOME
	export JAVA="$JAVA_HOME/bin/java"
	export BASE_DIR=$(dirname $0)/..
	# export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
	export CLASSPATH=.${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
	#===========================================================================================
	# JVM Configuration
	#===========================================================================================
	JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
	# JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext"
	JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

	$JAVA ${JAVA_OPT} [email protected]
           

具体修改参数:

vim bin/tools.sh
	# 删除 JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext"
           
2.1 接收消息
# 1.设置环境变量
	export NAMESRV_ADDR=localhost:9876
	# 2.接收消息
	sh /opt/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
           
2.2 发送消息
# 1.设置环境变量
	export NAMESRV_ADDR=localhost:9876
	# 2.使用安装包的Demo发送消息
	sh /opt/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
           
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

执行结果

RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试
2.3 关闭RocketMQ
# 1.关闭NameServer
	mqshutdown namesrv
	# 2.关闭Broker
	mqshutdown broker
           
RocketMQ 4.5.1 环境搭建RocketMQ 4.5.1 环境搭建一、RocketMQ环境搭建二、RocketMQ环境测试

继续阅读