在CentOS 7上安装RocketMQ 4.9.2
引言
本文将详细介绍如何在CentOS 7系统上安装并配置Apache RocketMQ 4.9.2版本。我们将涵盖从下载、解压到调整JVM参数、启动服务、测试以及常见问题的解决方法。
下载和解压RocketMQ
首先,登录到你的CentOS服务器,并执行以下命令来准备RocketMQ的安装目录:
bash
cd /opt
mkdir rocketmq
cd rocketmq
接着,使用wget
命令下载RocketMQ 4.9.2的压缩包:
bash
wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip
下载完成后,解压文件:
bash
unzip rocketmq-all-4.9.2-bin-release.zip
调整RocketMQ的JVM大小
默认情况下,RocketMQ的JVM设置可能不适合开发或测试环境。为了适应较低资源的环境,我们需要调整JVM参数。
进入RocketMQ安装目录(例如 /opt/rocketmq/rocketmq-all-4.9.2-bin-release
),查找所有包含JVM参数设置的Shell脚本:
bash
find . -name '*.sh' | xargs egrep 'Xms'
需要修改以下脚本中的JVM参数:
bin/runserver.sh
bin/runbroker.sh
bin/tools.sh
注意:在进行任何修改之前,请先备份相应的脚本文件。
修改示例
修改前:
bash
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
修改后:
bash
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
根据实际情况调整上述值。
启动Name Server
后台启动Name Server:
bash
nohup sh bin/mqnamesrv >/dev/null 2>&1 &
Name Server的默认端口为9876,可以通过以下命令查看其配置项:
bash
sh bin/mqnamesrv -p
也可以通过指定配置文件的方式启动Name Server:
bash
sh bin/mqnamesrv -c namesrv.conf
RocketMQ的日志默认路径为~/logs/rocketmqlogs/
。
启动Broker
启动Broker时需要指定要连接的Name Server:
bash
nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
测试RocketMQ
使用RocketMQ自带的消息生产者和消费者示例进行测试:
bash
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
关闭RocketMQ
关闭Broker:
bash
sh bin/mqshutdown broker
关闭Name Server:
bash
sh bin/mqshutdown namesrv
配置外网访问
编辑conf/broker.conf
文件,在末尾添加以下内容:
properties
namesrvAddr = 外网IP:9876 # (多个地址以;分隔)
brokerIP1 = 外网IP
enablePropertyFilter = true
重启Broker:
bash
nohup sh bin/mqbroker -n 外网IP:9876 autoCreateTopicEnable=true -c conf/broker.conf >/dev/null 2>&1 &
自动化启停脚本
创建启动脚本m_start.sh
:
bash
#!/bin/bash
# 启动server
nohup sh bin/mqnamesrv >/dev/null 2>&1 &
# 启动broker
nohup sh bin/mqbroker -n 外网IP:9876 autoCreateTopicEnable=true -c conf/broker.conf >/dev/null 2>&1 &
创建停止脚本m_stop.sh
:
bash
#!/bin/bash
# 关闭 broker
sh bin/mqshutdown broker
# 关闭 server
sh bin/mqshutdown namesrv
创建测试脚本test.sh
:
bash
#!/bin/bash
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
安装RocketMQ控制台
克隆rocketmq-externals
项目并编译rocketmq-console
:
bash
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
将生成的target/rocketmq-console-ng*.jar
文件放置于RocketMQ安装目录下,并创建一个启动脚本来启动RocketMQ控制台:
bash
nohup java -jar rocketmq-console-ng*.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876 > /dev/null 2>&1 &
常见问题及解决方案
问题1:JAVA_HOME变量未设置
如果遇到错误提示"Please set the JAVA_HOME variable in your environment",即使已经设置了JAVA_HOME
,可以尝试以下方法:
-
运行
which java
来确认Java的路径。 -
修改
bin/runserver.sh
,bin/runbroker.sh
, 和bin/tools.sh
文件,注释掉校验JAVA_HOME
的语句,并明确指定Java路径:bash#[ ! -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="/usr/bin/java"
通过以上步骤,你应该能够在CentOS 7上成功安装并运行RocketMQ 4.9.2。希望这篇指南对你有所帮助!
放假不迷糊,加班不抓狂!【微信小程序:排期计算器】,智能算日期,告别混乱,效率翻倍!