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


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


相关推荐
zai.zai10 分钟前
Linux系统之DHCP网络协议
linux·运维·网络协议
运维_攻城狮11 分钟前
python编写liunx服务器登陆自动巡检脚本
linux·运维·服务器·人工智能
_zwy17 分钟前
【Linux 进程状态】—— 从创建到消亡的全生命周期
linux·python·运维开发
程序员果子2 小时前
掌控网络安全,尽在 Linux 动态防火墙:firewalld 常用命令
linux·服务器·网络·安全
Ricoh.2 小时前
从 Linux 服务器到前端到网关到后端业务逻辑的分析
linux·服务器·前端
m0_748247803 小时前
Mysql官网下载Windows、Linux各个版本
linux·数据库·mysql
Zfox_4 小时前
网络层(Internet Layer)
linux·网络·计算机网络·ip
鸡鸭扣5 小时前
Linux相关知识(文件系统、目录树、权限管理)和Shell相关知识(字符串、数组)
linux·运维·shell
waves浪游5 小时前
string类详解(下)
linux·数据库·c++·算法