RocketMq学习和搭建环境

资料,大概了解RocketMq概念:
官网
https://rocketmq.apache.org/docs/quickStart/02quickstart/
纯概念简要介绍
https://www.cnblogs.com/yinjihuan/p/13672474.html
实现细节(面试)
https://zhuanlan.zhihu.com/p/94662788
概念介绍和简单环境搭建(翻译官网)
https://www.jianshu.com/p/824066d70da8

从北向websocket项目依赖确定使用org.apache.rocketmq的4.3.1版本。从官网https://rocketmq.apache.org/release-notes/2018/08/29/4.3.1/下载可执行的二进制版本。根据Quick Start,传到虚拟机上/root目录下,unzip解压。

启动的报错查看nohup.out。

1.启动NameServer

# 1.启动NameServer,后台启动
nohup sh bin/mqnamesrv &
# 2.查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log

报错:

root@fh:~/rocketmq-all-4.3.1-bin-release# nohup sh bin/mqnamesrv &
[1] 26595
root@fh:~/rocketmq-all-4.3.1-bin-release# nohup: ignoring input and appending output to 'nohup.out'

[1]+  Exit 1                  nohup sh bin/mqnamesrv
root@fh:~/rocketmq-all-4.3.1-bin-release# cat nohup.out 
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Unrecognized VM option 'UseCMSCompactAtFullCollection'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Unrecognized VM option 'UseCMSCompactAtFullCollection'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

解决:参考:https://blog.csdn.net/m0_46311226/article/details/104390877
方法一:换成jdk8,但是项目需要11,就需要java 11和8分别在不同的项目同时使用。

同时使用两个版本相同的问题
方法一,修改配置文件
方法二方法三:windows下
切换java版本方法
通过update-alternatives选择8或者11方法1方法2方法3方法4方法5

标准方法:
安装java8和11,配置环境变量

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.4
export JRE_HOME=${JAVA_HOME}
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

export JAVA_HOME_ROCKET="/usr/java/jdk1.8.0_171"
export CLASS_PATH="$JAVA_HOME_ROCKET/lib"
export PATH=".$PATH:$JAVA_HOME_ROCKET/bin"

runserver.shrunbroker.sh中的JAVA_HOME都改成JAVA_HOME_ROCKETCLASSPATH改成CLASS_PATH

方法二:参考https://cloud.tencent.com/developer/article/1639530https://segmentfault.com/a/1190000041096007
直接修改mq的启动文件。去掉配置使mq可以在java11下启动。

root@fh:~/rocketmq-all-4.3.1-bin-release# nohup ./bin/mqnamesrv &
[1] 28111
root@fh:~/rocketmq-all-4.3.1-bin-release# nohup: ignoring input and appending output to 'nohup.out'
root@fh:~/logs/rocketmqlogs# ls
namesrv_default.log  namesrv.log  rocketmq_client.log  rocketmq_client.log.1
root@fh:~/logs/rocketmqlogs# tail -f namesrv.log 
2023-01-30 11:26:41 INFO main - The Name Server boot success. serializeType=JSON
2023-01-30 11:26:41 INFO NettyEventExecutor - NettyEventExecutor service started
2023-01-30 11:26:42 INFO NettyServerCodecThread_1 - NETTY SERVER PIPELINE: channelRegistered 127.0.0.1:35998
2023-01-30 11:26:42 INFO NettyServerCodecThread_1 - NETTY SERVER PIPELINE: channelActive, the channel[127.0.0.1:35998]
2023-01-30 11:26:46 INFO NettyServerCodecThread_2 - NETTY SERVER PIPELINE: channelRegistered 127.0.0.1:36000
2023-01-30 11:26:46 INFO NettyServerCodecThread_2 - NETTY SERVER PIPELINE: channelActive, the channel[127.0.0.1:36000]
2023-01-30 11:26:46 INFO NettyServerCodecThread_3 - NETTY SERVER PIPELINE: channelRegistered 127.0.0.1:36002
2023-01-30 11:26:46 INFO NettyServerCodecThread_3 - NETTY SERVER PIPELINE: channelActive, the channel[127.0.0.1:36002]
2023-01-30 11:27:10 INFO NettyServerCodecThread_4 - NETTY SERVER PIPELINE: channelRegistered 127.0.0.1:36010
2023-01-30 11:27:10 INFO NettyServerCodecThread_4 - NETTY SERVER PIPELINE: channelActive, the channel[127.0.0.1:36010]
2023-01-30 11:27:41 INFO NSScheduledThread1 - --------------------------------------------------------
2023-01-30 11:27:41 INFO NSScheduledThread1 - configTable SIZE: 0
root@fh:~/rocketmq-all-4.3.1-bin-release/bin# cat 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)/..
#在CLASSPATH中添加RocketMQ的lib目录
#export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}

#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
#JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8  -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/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} $@

2.启动Broker

同样的需要修改runbroker.sh。注意删除PrintGCDateStamps/PrintGCApplicationStoppedTime/PrintAdaptiveSizePolicy。

# 1.启动Broker,后台启动
nohup sh bin/mqbroker -n localhost:9876 &
# 2.查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log 
root@fh:~/rocketmq-all-4.3.1-bin-release/bin# cat 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)/..
#在CLASSPATH中添加RocketMQ的lib目录
#export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn64m"
#JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
#删除PrintGCDateStamps/PrintGCApplicationStoppedTime/PrintAdaptiveSizePolicy
#JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails"
#JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
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} -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}"

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} $@
fi

如果闪退,修改JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn64m"为较小的值。

使用jps查看服务是否都启动成功

root@fh:~/rocketmq-all-4.3.1-bin-release/bin# jps
35941 BrokerStartup
28117 NamesrvStartup
36862 Jps

3.安装rocketmq-dashboard,可视化
参考https://blog.csdn.net/qq_43278717/article/details/121654964

4.启动控制器。

解决报错/root/opendaylight/etc/alarm.xml (No such file or directory),添加一个xml文件(不清楚内容应该填什么,先添加了一个元素)

vim /root/opendaylight/etc/alarm.xml

<?xml version="1.0" encoding="utf-8"?>
<result></result>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值