当前位置: 首页 > news >正文

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..." 表示成功 ✅

各端口作用:

端口号协议用途说明
10911TCPBroker 主通信端口(默认)这是 Broker 与 Producer 和 Consumer 进行消息发送、拉取、心跳等核心通信的主要端口。客户端通过此端口连接到 Broker。
10909TCPBroker HA(主从复制)端口(默认)在主从架构中,Master Broker 使用此端口向 Slave Broker 推送数据,实现数据同步和高可用。Slave 会连接到 Master 的这个端口。
10912TCPBroker 数据存储检查点端口(默认)用于 Broker 内部组件之间传递存储检查点信息,支持主从同步和故障恢复。通常与 HA 配合使用。
8090TCPBroker Dashboard / 控制台端口(自定义)通过 -p 8090:8080 映射访问 RocketMQ Dashboard
8091TCPBroker 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部署rocketmq https://blog.csdn.net/apple_74262176/article/details/141886930

http://www.dtcms.com/a/360089.html

相关文章:

  • 从零构建中间件:Tower 核心设计的来龙去脉
  • 当代科学(范畴大辩论) 的学科分科(论据)的要素论(论点)及方法论(论证):边缘处理
  • return 语句使用指南(c++)
  • 基于 YOLOv11n 的无人机航拍小目标检测算法学习
  • shell脚本第六阶段---三剑客之sed
  • Spring Cloud Alibaba Seata 分布式事务(六)
  • CPTS---Hospital
  • AliceVision相比于OpenMVG、Colmap有什么区别和特点
  • 计算机毕设选题:基于Python+Django实现电商评论情感分析系统
  • 嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
  • 常用定位技术对比解析
  • OpenCL C 命令队列
  • 点接触混合润滑完整数值解
  • Photoshop - Ps 标尺
  • PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍
  • [ Android Audio 篇 ] 高通平台 Android AudioRecord 多通道录音
  • 手写call函数【JavaScript】
  • Java多线程基础:进程、线程与线程安全实战
  • 《信息学奥林匹克辞典》中的一个谬误
  • 【Android】Notification 的基本使用
  • C++ 快速复习指南(上半部分)
  • 房屋租赁系统|基于SpringBoot和Vue的房屋租赁系统(源码+数据库+文档)
  • 8.31【Q】CXL-DMSim:
  • 数学分析原理答案——第七章 习题12
  • 设置Ubuntu 22.04 LTS上的rsync同步服务
  • Hysplit大气传输和污染扩散-轨迹聚合标准20%30%用途
  • 国内大型银行数据模型实践案例
  • PerfectSquares.java
  • 解决COB支架偏移载具分析问题根源
  • 编译器领域 名人堂