RocketMQ 4.5.1 环境搭建

RocketMQ 4.5.1 环境搭建



一、RocketMQ环境搭建

1.1 环境要求

软件名称版本下载地址
JDK11.0.5下载 提取码:6ksb
Linux64位系统(CentOS Linux release 7.1503)下载 提取码:8a9u
安装Maven(使用源码安装rocketmq才需要)3.2.x下载 提取码:ymli
RocketMQ4.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

在这里插入图片描述

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/

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 配置环境变量

在这里插入图片描述
验证搭建结果
在这里插入图片描述

4. JDK搭建

在这里插入图片描述在这里插入图片描述

5. 注意:修改脚本(使用jdk8没有问题,使用jdk8以上的版本需要修改脚本,否则虚拟机调优等相关的参数无法使用)

修改如下几个文件:

脚本名称作用
/opt/rocketmq/bin/runserver.sh保证正常使用nameserver
/opt/rocketmq/bin/runbroker.sh保证正常使用broker
/opt/rocketmq/bin/tools.sh保证正常使用系统的测试工具
步骤一:启动nameserver 出错

在这里插入图片描述

解决:修改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} $@

再次启动:
在这里插入图片描述

具体修改参数:

	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 出错

在这里插入图片描述

解决:修改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} $@
		else
			numactl --cpunodebind=$RMQ_NUMA_NODE --membind=$RMQ_NUMA_NODE $JAVA
			${JAVA_OPT} $@
		fi
	else
		$JAVA ${JAVA_OPT} --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED $@
	fi
	

再次运行:
在这里插入图片描述
重点需要添加的参数:jdk9之后使用引入了模块化
在这里插入图片描述

具体修改参数:

	vim bin/runbroker.sh
	删除:
	PrintGCDateStamps
	PrintGCApplicationStoppedTime
	PrintAdaptiveSizePolicy
	UseGCLogFileRotation
	NumberOfGCLogFiles=5
	GCLogFileSize=30m

rocketmq的日志存储位置(方便后续查看rocketmq的执行日志)

在这里插入图片描述

rocketmq的数据存储位置(方便后续查看rocketmq的存储数据)

在这里插入图片描述

6. 关闭rocketmq

注意:(顺序)先关闭broker,再关闭nameserver
在这里插入图片描述

7. 启动NameServer
	# 1.启动NameServer
	mqnamesrv
	# 2.查看启动日志
	tail -f /root/logs/rocketmqlogs/namesrv.log

在这里插入图片描述

8. 启动Broker
	# 1.启动Broker
	mqbroker -n localhost:9876
	# 2.查看启动日志
	tail -f /root/logs/rocketmqlogs/broker.log

在这里插入图片描述


二、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} $@

具体修改参数:

	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

在这里插入图片描述
执行结果
在这里插入图片描述

2.3 关闭RocketMQ
	# 1.关闭NameServer
	mqshutdown namesrv
	# 2.关闭Broker
	mqshutdown broker

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿城大饼

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值