RocketMQ5.0+保姆级单点Docker部署教程
引言:本文提供了目前基于最新版本的rocketmq部署教程,包括dashboard的部署,还有dashboard的具体使用,当然也参考了很多大佬的文章,得出了这个干货部署和使用教程。
一、官网
Docker 部署 RocketMQ | RocketMQ
二、部署
Step 1 : 开放必要端口:
Step 2 : 拉取 RocketMQ 镜像
拉取最新镜像:
docker pull apache/rocketmq:5.3.2
Step 3 : 创建容器共享网络
docker network create rocketmq
Step 4 : 部署 NameServer
1、创建目录并授权
mkdir -p /data/rocketmq/nameserver/{bin,logs}
chmod 777 -R /data/rocketmq/nameserver/*
2、脚本拷贝
先运行一个容器,把脚本拷贝出来
docker run -d --name rmqnamesrv apache/rocketmq:5.3.2 sh mqnamesrv
docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh /data/rocketmq/nameserver/bin/
docker rm -f rmqnamesrv
3、启动 NameServer
docker run -d --network rocketmq \
--privileged=true --restart=always \
--name rmqnamesrv -p 9876:9876 \
-v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /data/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh \
apache/rocketmq:5.3.2 sh mqnamesrv
查看日志检查是否成功:
docker logs -f rmqnamesrv
如果出现The Name Server boot success..表示 NameServer 启动成功 ✅
Step 5 : 部署 Broker + Proxy
1、创建目录
vim /data/rocketmq/broker/conf/broker.conf
2、创建 broker.conf
配置broker.conf,并配置好角色和刷盘的方式。
vim /data/rocketmq/broker/conf/broker.conf
# NameServer 地址
namesrvAddr = rmqnamesrv:9876# 集群 & Broker 信息
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0# Broker 对外 IP
brokerIP1 = 替换成自己的IP# Broker 角色 + 刷盘方式
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH# 消息存储路径(容器内)
storePathRootDir = /home/rocketmq/store
storePathCommitLog = /home/rocketmq/store/commitlog
storePathConsumeQueue = /home/rocketmq/store/consumequeue
storePathIndex = /home/rocketmq/store/indexdeleteWhen = 04
fileReservedTime = 72
diskMaxUsedSpaceRatio = 75autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
tlsTestModeEnable = false
3、拷贝 Broker 启动脚本
docker run -d --name rmqbroker apache/rocketmq:5.3.2 sh mqbroker
docker cp rmqbroker:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh /data/rocketmq/broker/bin
docker rm -f rmqbroker
4、重新启动 Broker + Proxy
docker run -d --network rocketmq \
--restart=always --name rmqbroker --privileged=true \
-p 10911:10911 -p 10909:10909 -p 10912:10912 \
-p 8090:8080 -p 8091:8081 \
-v /data/rocketmq/broker/logs:/home/rocketmq/logs \
-v /data/rocketmq/broker/store:/home/rocketmq/store \
-v /data/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /data/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
apache/rocketmq:5.3.2 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf
查看日志,看看是否启动成功:
docker logs -f rmqbroker
出现 "The broker[...] boot success..."
表示成功 ✅
各端口作用:
端口号 | 协议 | 用途说明 |
---|---|---|
10911 | TCP | Broker 主通信端口(默认)这是 Broker 与 Producer 和 Consumer 进行消息发送、拉取、心跳等核心通信的主要端口。客户端通过此端口连接到 Broker。 |
10909 | TCP | Broker HA(主从复制)端口(默认)在主从架构中,Master Broker 使用此端口向 Slave Broker 推送数据,实现数据同步和高可用。Slave 会连接到 Master 的这个端口。 |
10912 | TCP | Broker 数据存储检查点端口(默认)用于 Broker 内部组件之间传递存储检查点信息,支持主从同步和故障恢复。通常与 HA 配合使用。 |
8090 | TCP | Broker Dashboard / 控制台端口(自定义)通过 -p 8090:8080 映射访问 RocketMQ Dashboard |
8091 | TCP | Broker Proxy 模式 Dashboard 端口(自定义)在启动命令中使用了 --enable-proxy 参数,这会启动 RocketMQ Proxy 组件。Proxy 的 Dashboard 默认可能运行在 8081 端口。通过 -p 8091:8081 将其映射到宿主机的 8091 ,用于访问 Proxy 的管理界面。 |
Step 6 : 部署Dashboard(可选)
拉取最新镜像:
docker pull apacherocketmq/rocketmq-dashboard:latest
运行容器:
docker run -d \
--restart=always --name rmq-dashboard \
-p 8092:8082 --network rocketmq \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
apacherocketmq/rocketmq-dashboard
注意这里是8082端口,由于最新版本的rocketmq容器内的8080和8081端口有其他用途,这里最新的dashboard也在变化。
测试:访问 http://服务器IP:8082
进入控制台。
Step 7 :Dashboard的简单使用教程
这里的topic需要自己配置:
配置好你topic的每个属性,这里我觉得还是很个性化的,可以定制化配置
配置项 | 含义 | 作用 |
---|---|---|
clusterName | 指定该主题所属的集群名称。 | 在分布式消息系统中,一个集群通常包含多个Broker节点。通过选择不同的集群名称,可以将主题分配到不同的物理或逻辑集群上,实现资源隔离和负载均衡。 |
BROKER_NAME | 指定该主题所绑定的Broker节点名称。 | Broker是消息队列中的核心组件,负责接收、存储和转发消息。选择特定的Broker节点,可以控制消息的存储位置和访问路径,便于管理和维护。 |
topicName | 定义该主题的名称。 | 主题是消息分类的基本单位,生产者(Producer)根据主题名称发送消息,消费者(Consumer)根据主题名称订阅并消费消息。 |
messageType | 消息类型,例如NORMAL表示普通消息。 | 不同的消息类型可能有不同的处理方式和特性,如顺序消息、延迟消息等。设置消息类型可以满足不同的业务需求。 |
writeQueueNums | 写队列数量,即该主题在Broker上创建的写队列的数量。 | 写队列用于存储生产者发送的消息。增加写队列数量可以提高消息的并发处理能力,但也会占用更多的内存和磁盘资源。 |
readQueueNums | 读队列数量,即该主题在Broker上创建的读队列的数量。 | 读队列用于消费者从Broker中读取消息。增加读队列数量可以提高消息的并发消费能力,但同样会占用更多的内存和磁盘资源。 |
perm | 权限设置,通常是一个数字,表示对主题的操作权限,如7表示可读可写可删除。 | 设置主题的权限可以控制哪些用户或应用可以对该主题进行操作,保障系统的安全性和稳定性。 |
配置好后可以根据topic在这里查看具体的每一条消息
三、关于RocketMQ的在实战中的使用
可以参考我这篇文章:
学习RocketMQ(记录了个人艰难学习RocketMQ的笔记)_rocketmq学习-CSDN博客文章浏览阅读2.7k次,点赞30次,收藏80次。记录从0到1学习RocketMQ的学习笔记,还有对RocketMQ的各种实操,也踩了一大堆坑,尤其是Tag这东西,还好最后都一一捋清楚了。_rocketmq学习https://blog.csdn.net/qq_73440769/article/details/143443049?spm=1001.2014.3001.5501
四、大佬好文
Docker 部署 RocketMQ (图文并茂超详细)_docker部署rocketmq-CSDN博客文章浏览阅读1w次,点赞53次,收藏134次。使用 Docker 部署 RocketMQ 是一种高效便捷的方式,适合快速启动和管理分布式消息队列服务。首先,从 Docker Hub 拉取 RocketMQ 的官方镜像。RocketMQ 主要包括 NameServer 和 Broker 两个核心组件,因此需要分别启动对应的容器。通过命令行启动 NameServer 容器,配置必要的端口和网络设置。接着,启动 Broker 容器,配置连接到 NameServer 的地址,并指定数据存储路径等参数。RocketMQ 容器在 Docker 的隔离环境中运行_docker部署rocketmqhttps://blog.csdn.net/apple_74262176/article/details/141886930