在CentOS 7上安装RocketMQ 4.9.2

在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,可以尝试以下方法:

  1. 运行which java来确认Java的路径。

  2. 修改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。希望这篇指南对你有所帮助!


放假不迷糊,加班不抓狂!【微信小程序:排期计算器】,智能算日期,告别混乱,效率翻倍!


相关推荐
namehu8 分钟前
一次因企微域名限制引发的“骚操作”:Nginx 与 FRP 的踩坑排查实录
linux·nginx
云动雨颤9 分钟前
Linux下PXE服务器搭建
linux·运维·服务器
源远流长jerry21 分钟前
STM32之DMA详解
linux·网络·c++·stm32·单片机·嵌入式硬件
tianyuanwo36 分钟前
技术总结:AArch64架构下Jenkins Agent(RPM容器编译节点)掉线问题分析与排查
java·linux·jenkins
blasit1 小时前
Ubuntu 20.04.6交叉编译得到Ubuntu 16.04.6的可执行文件
linux·运维·ubuntu
轻松Ai享生活1 小时前
详解Linux LVM (Logical Volume Manager)
linux·后端
奇妙-2 小时前
创龙3576ububuntu系统设置静态IP方法
linux
Jayyih3 小时前
嵌入式系统学习Day23(进程)
linux·运维·服务器
Johny_Zhao3 小时前
Conda、Anaconda、Miniconda对比分析
linux·网络安全·信息安全·kubernetes·云计算·conda·shell·containerd·anaconda·yum源·系统运维·miniconda
大数据小墨3 小时前
在Arch Linux上设置SDDM自动登录Hyprland
linux