From 59562ab135b52354149d14dbc05a41c64b555f51 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Thu, 22 May 2025 13:48:59 +0800 Subject: [PATCH] 'commit' --- dsAi/Doc/2、安装RocketMQ5.3.2.md | 190 ++++++++++++++++++ .../dsideal/aiSupport/Util/RocketMqKit.java | 15 +- 2 files changed, 200 insertions(+), 5 deletions(-) create mode 100644 dsAi/Doc/2、安装RocketMQ5.3.2.md diff --git a/dsAi/Doc/2、安装RocketMQ5.3.2.md b/dsAi/Doc/2、安装RocketMQ5.3.2.md new file mode 100644 index 00000000..def36651 --- /dev/null +++ b/dsAi/Doc/2、安装RocketMQ5.3.2.md @@ -0,0 +1,190 @@ +**参考文档** + +https://blog.csdn.net/apple_74262176/article/details/141886930 + +**1、拉取 $RocketMQ$ 镜像** + +```sh +docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.2 +docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.2 docker.io/apache/rocketmq:5.3.2 +``` + +**2、 创建容器共享网络 $rocketmq$** + +```sh +docker network create rocketmq +``` + + **3、 部署 $NameServer$ 前提条件** + +``` +# 创建目录 +mkdir -p /data/rocketmq/nameserver/{bin,logs} + +# 授权文件 +chmod 777 -R /data/rocketmq/nameserver/* + +# 创建容器 +docker run -d \ +--privileged=true --name rmqnamesrv \ +docker.io/apache/rocketmq:5.3.2 sh mqnamesrv + +# 拷贝启动脚本 +docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh /data/rocketmq/nameserver/bin/ + +# 删除容器 NameServer +docker rm -f rmqnamesrv +``` + + +**4、启动容器** $NameServer$ + +``` +# 启动容器 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 \ +docker.io/apache/rocketmq:5.3.2 sh mqnamesrv + +# 部分命令解释 : +1. -e "MAX_HEAP_SIZE=256M" 设置最大堆内存和堆内存初始大小 +2. -e "HEAP_NEWSIZE=128M" 设置新生代内存大小 + +# 查看启动日志 +docker logs -f rmqnamesrv +``` + +**5、 查看 $NameServer$ 启动日志** + +- **看到 ‘The Name Server boot success…’, 表示NameServer 已成功启动。** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250522091505752.png) + + + +**6、部署 $Broker + Proxy$** + +- **创建挂载文件夹并授权** + + ``` + mkdir -p /data/rocketmq/broker/{store,logs,conf,bin} + chmod 777 -R /data/rocketmq/broker/* + ``` + + + +**7、创建broker.conf文件** + +``` +vi /data/rocketmq/broker/conf/broker.conf + +# nameServer 地址多个用;隔开 默认值null +# 例:127.0.0.1:6666;127.0.0.1:8888 +namesrvAddr = 10.10.14.14:9876 +# 集群名称 +brokerClusterName = DefaultCluster +# 节点名称 +brokerName = broker-a +# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 +brokerId = 0 +# Broker服务地址 String 内部使用填内网ip,如果是需要给外部使用填公网ip +brokerIP1 = 10.10.14.14 +# Broker角色 +brokerRole = ASYNC_MASTER +# 刷盘方式 +flushDiskType = ASYNC_FLUSH +# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04 +deleteWhen = 04 +# 以小时计算的文件保留时间 默认值72小时 +fileReservedTime = 72 +# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭 +autoCreateTopicEnable=true +# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭 +autoCreateSubscriptionGroup=true +# 禁用 tsl +tlsTestModeEnable = false +``` + +**8、 拷贝启动脚本** + +``` +# 启动 Broker 容器 +docker run -d \ +--name rmqbroker --privileged=true \ +docker.io/apache/rocketmq:5.3.2 sh mqbroker + +# 拷贝脚本文件 +docker cp rmqbroker:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh /data/rocketmq/broker/bin + +# 删除容器 Broker +docker rm -f rmqbroker +``` + +**9、 启动容器 Broker** + +``` +# 启动容器 Broker +docker run -d --network rocketmq \ +--restart=always --name rmqbroker --privileged=true \ +-p 10911:10911 -p 10909:10909 \ +-v /data/rocketmq/broker/logs:/root/logs \ +-v /data/rocketmq/broker/store:/root/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" \ +docker.io/apache/rocketmq:5.3.2 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf + +# 查看启动日志 +docker logs -f rmqbroker +``` + +- **启动成功日志如下** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250522091934903.png) + + + +**10、部署RocketMQ控制台(rocketmq-dashboard)** + +- **拉取镜像** + + ```sh + docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apacherocketmq/rocketmq-dashboard:2.0.1 + docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apacherocketmq/rocketmq-dashboard:2.0.1 docker.io/apacherocketmq/rocketmq-dashboard:2.0.1 + ``` + + + +**11、 启动容器 Rocketmq-dashboard** + +``` +docker run -d \ +--restart=always --name rmq-dashboard \ +-p 8080:8080 --network rocketmq \ +-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ + docker.io/apacherocketmq/rocketmq-dashboard:2.0.1 +``` + + + +**12、 查看启动日志** + +```sh +docker logs -f rmq-dashboard +``` + + + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250522092229565.png) + +**13、 访问RMQ控制台** + +- [**http://10.10.14.14:8080/**](http://10.10.14.14:8080/) **( IP地址改成自己的 )** + +![](D:\dsWork\dsProject\dsAiSupport\Doc\20250522092309206.png) + +**14、 查看创建的 RocketMQ** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20250522092331493.png) \ No newline at end of file diff --git a/dsAi/src/main/java/com/dsideal/aiSupport/Util/RocketMqKit.java b/dsAi/src/main/java/com/dsideal/aiSupport/Util/RocketMqKit.java index bc13c69c..54d347c0 100644 --- a/dsAi/src/main/java/com/dsideal/aiSupport/Util/RocketMqKit.java +++ b/dsAi/src/main/java/com/dsideal/aiSupport/Util/RocketMqKit.java @@ -9,6 +9,8 @@ import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.common.message.MessageQueue; import org.apache.rocketmq.remoting.common.RemotingHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.List; @@ -18,6 +20,7 @@ import java.util.List; * 包含同步发送、异步发送、顺序消息发送和消息消费等功能 */ public class RocketMqKit { + private static final Logger logger = LoggerFactory.getLogger(RocketMqKit.class); private static volatile DefaultMQProducer producer; private static volatile DefaultLitePullConsumer consumer; private static final Object producerLock = new Object(); @@ -231,25 +234,27 @@ public class RocketMqKit { public static void main(String[] args) { // 模拟发送 - + logger.info("当前服务器:"+nameServer); + + try { // 测试同步发送 - System.out.println("=== 测试同步发送 ==="); + logger.info("=== 测试同步发送 ==="); syncSend(); Thread.sleep(1000); // 测试异步发送 - System.out.println("\n=== 测试异步发送 ==="); + logger.info("\n=== 测试异步发送 ==="); asyncSend(); Thread.sleep(1000); // 测试顺序消息发送 - System.out.println("\n=== 测试顺序消息发送 ==="); + logger.info("\n=== 测试顺序消息发送 ==="); orderSend(); Thread.sleep(1000); // 测试消费者拉取消息 - System.out.println("\n=== 测试消息消费 ==="); + logger.info("\n=== 测试消息消费 ==="); // 注意:这是一个无限循环的方法,这里只运行5秒钟作为演示 Thread thread = new Thread(() -> { try {