安装RocketMq流程及踩坑

1. 软件准备

首先Rocketmq版本4.5.1

2. 环境要求

  • JDK >= 8, 这里使用的是11.0.12
  • Linux64为操作系统,这里使用的是CentOS8
  • 4G+的存储空间

3. 下载压缩包

两种方式,

  • 一种是去官网下载zip包,然后进行解压缩,zip包分为两种,一种是源码包,一种是编译后的bin文件包,如果是源码包的话,启动本地环境还需要安装Maven3.2.x
  • 另一种是直接使用命令 wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all- 4.5.1-bin-release.zip 进行下载即可

这里我是采用的第一种,去官网下载的bin文件包,然后上传到服务器中,官网的下载地址 点我下载, 在页面中选择对应的版本和下载的zip包格式即可。
在这里插入图片描述

4. 解压缩

对下载好的压缩包进行解压缩,使用命令
第一个命令直接解压,第二个命令指定解压到的目录,根据需要选择一个即可

unzip rocketmq-all-4.5.1-bin-release.zip
unzip rocketmq-all-4.5.1-bin-release.zip -d /rocketmq

5. 配置环境变量

该步骤为非必须步骤,如果不需要可以直接跳过,使用命令编辑配置文件

vim /etc/profile

在配置文件中添加, ROCKET_HOME为rocketmq的实际安装位置,请按照实际安装的位置进行更改

# this is rocketmq env
export ROCKET_HOME=/java/rocketmq/rocketmq
export PATH=$PATH:$ROCKET_HOME/bin

保存配置文件,然后使用source /etc/profile 命令刷新配置文件
最后使用mq命令,如果出现如下界面表示环境变量配置成功:
在这里插入图片描述

6. 启动

  1. 使用mqnamesrv进行mq的启动,出现如下界面表示启动成功:
    在这里插入图片描述
  2. 使用mqbroker -n localhost:9876进行broker的启动,出现如下界面表示启动成功:
    在这里插入图片描述

7. 本地测试

server和broker都启动完毕之后,如果要进行本地的收发消息测试,还需要修改tools.sh脚本三处地方
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
export CLASSPATH=.${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
#JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext"

修改完毕之后,使用修改好的tools.sh进行 启动消费者,然后启动生产者,观察消费者是否能收到生产者生产的消息即可。

  1. 启动消费者
# 1.设置环境变量 
export NAMESRV_ADDR=localhost:9876 
# 2.接收消息 
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

在这里插入图片描述
2. 启动生产者

# 1.设置环境变量 
export NAMESRV_ADDR=localhost:9876
 # 2.使用安装包的Demo发送消息 
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

在这里插入图片描述
3. 消费成功
当消费者界面中能够成功收到生产者生产的消息即为消费成功
在这里插入图片描述
至此,RocketMq安装完毕。

8.问题总结

  1. 首先由于rocketmq是使用jdk8进行开发的,所以在使用版本11进行启动的时候会出现下面的错误:
    在这里插入图片描述
    报错的大概意思是关于垃圾回收的一部分参数在jdk9的已经被遗弃
    处理办法:将上述报错的参数都进行删除,打开runserver.sh文件(vim runserver.sh),将如图所示的那行命令中出现报错的参数都进行删除即可
    在这里插入图片描述
  2. 再次启动,会报另一种错误
    在这里插入图片描述
    大概意思是说不支持使用-Djava.ext.dirs的方式,建议使用-classpath
    处理办法: 这里与第一种错误处理方式相同,将当前报错的这行命令注释掉即可
    在这里插入图片描述
  3. 再次启动,仍然会报一个找不到或无法加载主类org.apache.rocketmq.namesrv.NamesrvStartup的错误
    在这里插入图片描述
    处理办法:这里是由于在runserver.sh中导入的CLASSPATH不正确导致的,这里将CLASSPATH修改为: .:${BASE_DIR}/conf:${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib/*
    在这里插入图片描述
  4. 启动broker的时候,会报如下错误,大概意思跟启动mqserver的时候一样,是有一些参数不支持了。
    在这里插入图片描述
    处理方法:编辑runbroker.sh文件
vim bin/runbroker.sh 
删除:
PrintGCDateStamps 
PrintGCApplicationStoppedTime 
PrintAdaptiveSizePolicy 
UseGCLogFileRotation 
NumberOfGCLogFiles=5 
GCLogFileSize=30m

由于jdk9开始,使用模块化开发,所以这里添加对java export的支持,使用如下语句
$JAVA ${JAVA_OPT} --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED 替换文件最后的$JAVA ${JAVA_OPT}

9. 附件

  1. 修改后的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 -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} $@
  1. 修改后的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} -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} --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED $@
fi
  1. 修改后的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} $@
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
RocketMQ的下载和安装可以按照以下步骤进行: Windows中的安装: 1. 前往RocketMQ官网或Github下载RocketMQ的运行版本。 2. 将下载的压缩包解压到指定路径。 3. 配置系统环境变量,将RocketMQ的bin目录添加到PATH中。 4. 首先启动NameServer,然后启动Broker。 Linux中的安装: 1. 创建一个文件夹用于存放RocketMQ。 2. 上传并解压下载好的运行版本文件。可以使用tar命令或unzip命令进行解压。 3. 启动NameServer和Broker。 源码安装: 1. 使用IDEA打开RocketMQ的源码。 2. 刷新maven下载相关依赖。 3. 启动nameserv。 控制台安装: 1. 可以使用maven打包控制台。 2. 在控制台中执行运行命令。 在进行RocketMQ的下载和安装之前,请确保符合以下要求: - Windows或Linux 64位系统。 - 安装JDK1.8(64位)。 - 如果选择源码安装,则需要安装Maven 3.2.x。 以上是RocketMQ的下载和安装过程。希望对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [RocketMQ Console安装和使用](https://download.csdn.net/download/weixin_38675232/14073180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [RocketMQ的下载与安装(全网最细保姆级别教学)](https://blog.csdn.net/weixin_50503886/article/details/129680320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码拯救不了世界

心情好的话,可以打赏一下

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

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

打赏作者

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

抵扣说明:

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

余额充值