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


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


相关推荐
Yana.nice4 分钟前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月9 分钟前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊37 分钟前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey1 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1151 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng1 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.1 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon2 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq2 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan2 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc