编辑
2025-12-17
RocketMQ
00
请注意,本文编写于 46 天前,最后修改于 46 天前,其中某些信息可能已经过时。

目录

一、RocketMQ组件
二、RocketMQ下载
三、RocketMQ部署
四、启动RocketMQ集群
修改 broker-a.properties(主 A)
修改 broker-a-s.properties(从 A)
修改broker-b.properties(主 B)
修改broker-b-s.properties(从 B)
创建存储目录(适配你的路径)
启动 Broker
查看端口是否启动成功
五、安装rocketmq-dashboard面板

一、RocketMQ组件

RocketMQ基本组件

  • Topic:主题,消息归类的基本单元

  • Queue:队列,消息存储和传输的实际容器,也是消息的最小存储单元

  • Producer:生产者,用来构建并传输消息

  • Consumer:消费者,用来接收并处理消息

  • ConsumerGroup:消费者组,消费者组是RocketMQ中承载多个消费行为一致的消费者负载均衡分组。和消费者不同,消费者组是一个逻辑概念

  • NameServer:可以理解成注册中心,负责更新和发现Broker服务。在NameErver的集群中,NameServer与NameServer之间是没有任何通信的,它是无状态的

  • Broker集群:Broker由一个或多个Broker组成集群,每一个Broker就是一个Kafka实例

主题(Topic)和队列(Queue)

  • 在RocketMQ中要实现消息的发送与订阅,必须首先创建Topic。

  • 因为Topic是RocketMQ进行消息归类的基本单元。通过Topic接收消息生产者发布的消息,并将消息转发给消费者。

  • 比如任务类的消息,就指定好任务类的topic,生产者根据topic把消息发送到队列,消费者订阅这个topic消费消息。

二、RocketMQ下载

官网地址:https://rocketmq.apache.org/zh/

或者阿里官网下载:https://mirrors.aliyun.com/apache/rocketmq/5.3.1/ image.png

三、RocketMQ部署

上传下载的包的到服务器上,解压后进入bin目录下

js
cd /rocketmq/rocketmq-all-5.3.1-bin-release/bin

修改两个文件配置

js
[root@k8s-node04 bin]# ls -l *run* -rwxr-xr-x 1 root root 3332 1127 11:32 runbroker.cmd -rwxr-xr-x 1 root root 4914 1127 11:32 runbroker.sh -rwxr-xr-x 1 root root 2876 1127 11:32 runserver.cmd -rwxr-xr-x 1 root root 4461 1127 11:32 runserver.sh

image.png

自己电脑修改它内存的大小,默认8G太多了都改成1g

js
vi runbroker.sh

image.png

js
vi runserver.sh

image.png

四、启动RocketMQ集群

先启动注册中心

js
nohup ./mqnamesrv &

image.png

然后进入conf目录

js
cd /rocketmq/rocketmq-all-5.3.1-bin-release/conf

这类目录是 RocketMQ 官方提供的 Broker 集群部署配置模板,命名规则:m=Master(主节点)、s=Slave(从节点)、async=异步复制、sync=同步复制、noslave=无从节点,用于快速搭建不同架构的 Broker 集群:

image.png

image.png

修改 broker-a.properties(主 A)

js
vi /rocketmq/rocketmq-all-5.3.1-bin-release/conf/2m-2s-sync/broker-a.properties
yml
# ===================== 核心基础配置 ===================== # NameServer地址(单节点) namesrvAddr=192.168.183.120:9876 # Broker内网IP(单服务器可省略,自动识别,建议显式指定) brokerIP1=192.168.183.120 # Broker名称(主从节点必须一致) brokerName=broker-a # 节点类型:0=主节点,1=从节点 brokerId=0 # 消息存储根目录(注意:替换为你的RocketMQ实际安装路径,5.3.4则改5.3.4) storePathRootDir=/rocketmq/rocketmq-all-5.3.1-bin-release/store/a # 业务监听端口(主A专属,避免冲突) listenPort=10911 # HA监听端口(主A专属) haListenPort=10915 # ===================== 集群模式配置 ===================== # 同步复制模式(2m-2s-sync核心:主节点必须为SYNC_MASTER) brokerRole=SYNC_MASTER # 刷盘策略:ASYNC_FLUSH(异步,测试用)/SYNC_FLUSH(同步,生产推荐) flushDiskType=ASYNC_FLUSH # ===================== 5.x版本适配配置 ===================== # 关闭5.x废弃的VIP通道(必配,避免连接异常) isVIPChannel=false # 日志子路径(避免根目录混乱,自动基于storePathRootDir生成) storePathCommitLog=${storePathRootDir}/commitlog storePathConsumeQueue=${storePathRootDir}/consumequeue storePathIndex=${storePathRootDir}/index # 日志删除策略:凌晨4点删除,保留72小时(避免磁盘占满) deleteWhen=04 fileReservedTime=72 # 线程池优化(提升并发处理能力) sendMessageThreadPoolNums=16 brokerClientThreadPoolNums=8

修改 broker-a-s.properties(从 A)

js
vi /rocketmq/rocketmq-all-5.3.1-bin-release/conf/2m-2s-sync/broker-a-s.properties
bash
# ===================== 核心基础配置 ===================== # NameServer地址(和主节点一致) namesrvAddr=192.168.183.120:9876 # Broker内网IP(和主节点一致) brokerIP1=192.168.183.120 # Broker名称(必须和主A一致) brokerName=broker-a # 节点类型:从节点固定为1 brokerId=1 # 消息存储根目录(从节点独立路径) storePathRootDir=/rocketmq/rocketmq-all-5.3.1-bin-release/store/a-s # 业务监听端口(从A专属) listenPort=10912 # HA监听端口(从A专属) haListenPort=10916 # ===================== 集群模式配置 ===================== # 从节点固定为SLAVE brokerRole=SLAVE # 刷盘策略(从节点建议和主节点一致) flushDiskType=ASYNC_FLUSH # ===================== 5.x版本适配配置 ===================== isVIPChannel=false storePathCommitLog=${storePathRootDir}/commitlog storePathConsumeQueue=${storePathRootDir}/consumequeue storePathIndex=${storePathRootDir}/index deleteWhen=04 fileReservedTime=72 sendMessageThreadPoolNums=16 brokerClientThreadPoolNums=8

修改broker-b.properties(主 B)

js
vi /rocketmq/rocketmq-all-5.3.1-bin-release/conf/2m-2s-sync/broker-b.properties
yml
# ===================== 核心基础配置 ===================== namesrvAddr=192.168.183.120:9876 brokerIP1=192.168.183.120 brokerName=broker-b brokerId=0 storePathRootDir=/rocketmq/rocketmq-all-5.3.1-bin-release/store/b listenPort=10913 haListenPort=10917 # ===================== 集群模式配置 ===================== brokerRole=SYNC_MASTER flushDiskType=ASYNC_FLUSH # ===================== 5.x版本适配配置 ===================== isVIPChannel=false storePathCommitLog=${storePathRootDir}/commitlog storePathConsumeQueue=${storePathRootDir}/consumequeue storePathIndex=${storePathRootDir}/index deleteWhen=04 fileReservedTime=72 sendMessageThreadPoolNums=16 brokerClientThreadPoolNums=8

修改broker-b-s.properties(从 B)

js
vi /rocketmq/rocketmq-all-5.3.1-bin-release/conf/2m-2s-sync/broker-b-s.properties
yml
# ===================== 核心基础配置 ===================== namesrvAddr=192.168.183.120:9876 brokerIP1=192.168.183.120 brokerName=broker-b brokerId=1 storePathRootDir=/rocketmq/rocketmq-all-5.3.1-bin-release/store/b-s listenPort=10914 haListenPort=10918 # ===================== 集群模式配置 ===================== brokerRole=SLAVE flushDiskType=ASYNC_FLUSH # ===================== 5.x版本适配配置 ===================== isVIPChannel=false storePathCommitLog=${storePathRootDir}/commitlog storePathConsumeQueue=${storePathRootDir}/consumequeue storePathIndex=${storePathRootDir}/index deleteWhen=04 fileReservedTime=72 sendMessageThreadPoolNums=16 brokerClientThreadPoolNums=8

创建存储目录(适配你的路径)

js
# 按配置中的路径创建4个存储目录 mkdir -p /rocketmq/rocketmq-all-5.3.1-bin-release/store/{a,a-s,b,b-s} # 授权避免权限不足 chmod 777 -R /rocketmq/rocketmq-all-5.3.1-bin-release/store

启动 Broker

js
# 进入bin目录(核心!必须在bin目录执行启动命令) cd /rocketmq/rocketmq-all-5.3.1-bin-release/bin # 1. 启动主A nohup ./mqbroker -c ../conf/2m-2s-sync/broker-a.properties > /tmp/broker-a.log 2>&1 & # 2. 启动从A(等待10秒) sleep 10 nohup ./mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties > /tmp/broker-a-s.log 2>&1 & # 3. 启动主B(等待10秒) sleep 10 nohup ./mqbroker -c ../conf/2m-2s-sync/broker-b.properties > /tmp/broker-b.log 2>&1 & # 4. 启动从B(等待10秒) sleep 10 nohup ./mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties > /tmp/broker-b-s.log 2>&1 &

查看端口是否启动成功

js
ss -tlnp | grep -E "10911|10912|10913|10914|10915|10916|10917|10918"

image.png

五、安装rocketmq-dashboard面板

https://github.com/apache/rocketmq-dashboard/tags

下载 + 解压 RocketMQ Dashboard 1.0.0

https://repo1.maven.org/maven2/org/apache/rocketmq/rocketmq-dashboard/1.0.0/rocketmq-dashboard-1.0.0.jar

启动

js
java -jar rocketmq-dashboard-1.0.0.jar \ --rocketmq.config.namesrvaddr=127.0.0.1:9876 \ --rocketmq.config.isvipchannel=false \ --rocketmq.config.loginrequired=false > /tmp/dashboard.log 2>&1 &

打开网页访问成功 image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document