CentOS 安装部署RocketMQ

检查环境

RocketMQ是java开发的,所以依赖 JDK 环境,先检查Java环境

java -version

下载安装包

安装包可以直接去 RocketMQ官网 下载

wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-source-release.zip

解压安装包

unzip rocketmq-all-5.3.1-bin-release.zip
mv rocketmq-5.3.1 rocketmq
cd rocketmq-5.3.1/

解压后我们可以看到RocketMQ 的目录结构如下:

  • bin/:启动脚本和管理工具
  • conf/:配置文件
  • lib/:运行时依赖的库文件
  • logs/:RocketMQ 的日志文件

配置并启动MQ

RocketMQ 的配置分为两个部分:NameServer 和 Broker。

调整 JVM 内存参数
由于 RocketMQ 是一个高性能的消息中间件,合理的 JVM 内存配置至关重要。默认情况下,RocketMQ 的 NameServer 和 Broker 使用的 JVM 参数在启动脚本 bin/runserver.sh 和 bin/runbroker.sh 中设置。

因为我这里是生产环境服务器内存够,所以我不做调整,如果你的服务器内存有限,建议调整这些参数,以 Broker 为例:

vi /usr/local/rocketmq/bin/runserver.sh
vi /usr/local/rocketmq/bin/runbroker.sh

# 如果你的机器内存小可以将默认的 JVM 配置修改为适合当前机器环境的配置,比如
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

配置broker配置文件,位置:conf/broker.conf

增加以下配置:

namesrvAddr = localhost:9876
autoCreateTopicEnable=true

 

运行 NameServer 

nohup sh bin/mqnamesrv &

# 查看日志
tail -f ~/logs/rocketmqlogs/namesrv.log

日志中出现 The Name Server boot success... 即表示 NameServer 启动成功。

也可以使用jps查看java进程

启动 Broker

nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &

# 查看日志
tail -f ~/logs/rocketmqlogs/broker.log

2024-12-12 16:51:56 INFO main - The broker[compute1, 10.0.21.52:10911] boot success. serializeType=JSON and name server is localhost:9876
2024-12-12 16:52:05 INFO BrokerControllerScheduledThread1 - Dispatch task fall behind commit log 0bytes
2024-12-12 16:52:06 INFO brokerOutApi_thread_2 - Registering current broker to name server completed. TargetHost=localhost:9876

日志中出现 The broker[broker-a, 10.0.21.52:10911] boot success... 时,说明 Broker 启动成功

去掉 nohup 直接运行,观察实时输出,启动失败时可以方便排查

测试消息

Producer 发送消息

设置 NAMESRV_ADDR 环境变量

export NAMESRV_ADDR=localhost:9876

发送消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

终端出现类似以下打印输出,表示发送成功

SendResult [sendStatus=SEND_OK, msgId=0A001534A03A277050DC913FE2BA03E0, offsetMsgId=0A00153400002A9F000000000003A952, messageQueue=MessageQueue [topic=TopicTest, brokerName=compute1, queueId=1], queueOffset=248]
SendResult [sendStatus=SEND_OK, msgId=0A001534A03A277050DC913FE2BB03E1, offsetMsgId=0A00153400002A9F000000000003AA44, messageQueue=MessageQueue [topic=TopicTest, brokerName=compute1, queueId=2], queueOffset=248]
SendResult [sendStatus=SEND_OK, msgId=0A001534A03A277050DC913FE2BD03E2, offsetMsgId=0A00153400002A9F000000000003AB36, messageQueue=MessageQueue [topic=TopicTest, brokerName=compute1, queueId=3], queueOffset=248]

Consumer 消费消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

终端出现类似以下打印输出,表示消息消费成功

ConsumeMessageThread_please_rename_unique_group_name_4_13 Receive New Messages: [MessageExt [brokerName=compute1, queueId=0, storeSize=242, queueOffset=219, sysFlag=0, bornTimestamp=1732870482854, bornHost=/10.0.21.52:38214, storeTimestamp=1732870482855, storeHost=/10.0.21.52:10911, msgId=0A00153400002A9F0000000000033E80, commitLogOffset=212608, bodyCRC=961083554, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={CONSUME_START_TIME=1732870532089, MSG_REGION=DefaultRegion, UNIQ_KEY=0A001534A03A277050DC913FE1A6036F, CLUSTER=DefaultCluster, MIN_OFFSET=0, TAGS=TagA, WAIT=true, TRACE_ON=true, MAX_OFFSET=250}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 56, 55, 57], transactionId='null'}]] 
ConsumeMessageThread_please_rename_unique_group_name_4_1 Receive New Messages: [MessageExt [brokerName=compute1, queueId=0, storeSize=242, queueOffset=215, sysFlag=0, bornTimestamp=1732870482825, bornHost=/10.0.21.52:38214, storeTimestamp=1732870482826, storeHost=/10.0.21.52:10911, msgId=0A00153400002A9F0000000000032F60, commitLogOffset=208736, bodyCRC=1082532093, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={CONSUME_START_TIME=1732870532089, MSG_REGION=DefaultRegion, UNIQ_KEY=0A001534A03A277050DC913FE189035F, CLUSTER=DefaultCluster, MIN_OFFSET=0, TAGS=TagA, WAIT=true, TRACE_ON=true, MAX_OFFSET=250}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 56, 54, 51], transactionId='null'}]] 

如何关闭 Broker 与 NameServer

关闭 Broker

sh bin/mqshutdown namesrv

The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

关闭 NameServer

sh bin/mqshutdown namesrv

The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

设置开机自启

创建NameServer的服务

创建并编辑 /etc/systemd/system/rocketmq-nameserver.service

[Unit]
Description=RocketMQ NameServer Service
After=network.target

[Service]
Type=forking
ExecStart=/opt/rocketmq/bin/mqnamesrv
ExecStop=/opt/rocketmq/bin/mqshutdown namesrv
User=root
Restart=on-failure

[Install]
WantedBy=multi-user.target

创建Broker的服务

创建并编辑 /etc/systemd/system/rocketmq-broker.service

[Unit]
Description=RocketMQ Broker Service
After=network.target rocketmq-nameserver.service

[Service]
Type=forking
ExecStart=/opt/rocketmq/bin/mqbroker -n localhost:9876
ExecStop=/opt/rocketmq/bin/mqshutdown broker
User=root
Restart=on-failure

[Install]
WantedBy=multi-user.target

设置开机自启

# 刚编辑了服务要重载
systemctl daemon-reload
# 设置重启
systemctl enable rocketmq-nameserver
systemctl enable rocketmq-broker

配置可视化控制台

原有的rocketmq-console已被rocketmq-externals单独列为一个项目,现在取名:rocketmq-dashboard

下载或者克隆项目后用mvn进行编译

# Git克隆
https://github.com/apache/rocketmq-dashboard.git
# 最新版包下载
https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-2.0.0.tar.gz
# 进入项目或者解压后进入项目 编译
mvn clean package -Dmaven.test.skip=true
# 启动
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

### 在 CentOS 7 上安装 RocketMQ #### 下载并解压 RocketMQ 对于在 CentOS 7 上安装 RocketMQ 的操作,可以访问 Apache RocketMQ 的官方资源获取最新版本的压缩包。例如,针对 4.8.0 版本的操作如下: ```bash wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip unzip rocketmq-all-4.8.0-bin-release.zip ``` 此过程会下载指定版本的 RocketMQ 并将其解压缩至当前工作目录[^2]。 #### 移动与创建软连接 为了方便管理和使用,建议将解压后的文件夹移动到 `/usr/local` 目录下,并建立一个名为 `rocketmq` 的符号链接指向实际安装路径: ```bash mv rocketmq-all-4.8.0-bin-release /usr/local/ ln -s /usr/local/rocketmq-all-4.8.0-bin-release /usr/local/rocketmq ``` 这一步骤有助于简化后续配置和启动命令中的路径输入。 #### 配置 JVM 参数(可选) 如果遇到内存不足等问题,可能需要调整 RocketMQ 使用的 Java 虚拟机(JVM)参数以适应服务器硬件条件。可以通过编辑相关脚本来实现这一点[^3]。 #### 启动 NameServer 和 Broker 进入 RocketMQ 安装目录后,通过执行特定 Shell 脚本来分别启动 Name Server 及 Broker 组件。通常情况下,默认设置即可满足大多数应用场景的需求。 #### 安装 RocketMQ 控制台(可选) 若希望拥有图形化界面监控集群状态,则可以选择部署 RocketMQ 控制台应用。利用以下命令可以在后台运行该服务: ```bash nohup java -jar rocketmq-console-ng*.jar --server.port=8080 --spring.rocketmq.name-server=localhost:9876 > /dev/null 2>&1 & ``` 上述指令将会以后台模式启动控制台程序,并监听于本地主机的 8080 端口上[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值