【Docker】RocketMQ5.1.0的配置部署与基于SpringBoot3.0.5的代码基础配置

一、项目信息

1 版本

  1. JAVA 17
  2. SpringBoot 3.0.5
  3. CentOS 7.5
  4. Rocket 5.1.0

2 依赖

<!-- SpringBoot 依赖 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- RocketMQ 依赖 -->
<dependency>
	<groupId>org.apache.rocketmq</groupId>
	<artifactId>rocketmq-spring-boot-starter</artifactId>
	<version>2.2.3</version>
</dependency>

3 配置

rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=BREAD_ORDER_GROUP

4 项目结构

在这里插入图片描述

二、RocketMQ的Docker配置部署

1 RocketMQ部署

1.1 查看镜像

docker search apache/rocketmq

1.2 拉取镜像

docker pull apache/rocketmq:5.1.0

1.3 查看已拉取镜像

docker images

在这里插入图片描述

1.4 创建挂载文件夹

1.4.1 创建Broker挂载文件夹

mkdir /home/rocketmq/broker/bin -p
mkdir /home/rocketmq/broker/conf -p
mkdir /home/rocketmq/broker/logs -p
mkdir /home/rocketmq/broker/store -p

在这里插入图片描述

1.4.2 创建NameServer挂载文件夹

mkdir /home/rocketmq/nameserver/bin -p
mkdir /home/rocketmq/nameserver/conf -p

1.5 启动容器以复制配置文件

1.5.1 启动NamerServer容器

docker run -d \
--privileged=true \
--name testnameserver \
apache/rocketmq:5.1.0 sh mqnamesrv

1.5.2 复制NameServer启动脚本

docker cp testnameserver:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /home/rocketmq/nameserver/bin/runserver.sh

1.5.3 修改脚本文件

vim /home/rocketmq/nameserver/bin/runserver.sh

# 注释该行
calculate_heap_sizes

在这里插入图片描述
1.5.4 停止并删除NameServer容器

docker stop testnameserver

docker rm testnameserver

1.5.5 启动Broker容器

docker run -d \
--name testbroker \
--privileged=true \
apache/rocketmq:5.1.0 \
sh mqbroker

1.5.6 复制Broker启动脚本

docker cp testbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /home/rocketmq/broker/bin/runbroker.sh

1.5.7 修改脚本文件

vim /home/rocketmq/broker/bin/runbroker.sh

# 注释该行
calculate_heap_sizes

在这里插入图片描述
1.5.8 停止并删除Broker容器

docker stop testbroker

docker rm testbroker

1.6 创建broker.conf配置文件

vim /home/rocketmq/broker/conf/broker.conf
# 你的NameServer服务器公网IP地址与端口号
namesrvAddr=127.0.0.1:9876
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker服务地址(你的服务器公网IP地址)
brokerIP1 = 127.0.0.1
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 删除时间(4点)
deleteWhen = 04
# 文件保留时间(72小时)
fileReservedTime = 72
# 是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable = true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup = true
# 检测可用的磁盘空间大小,超过后会写入报错(95%)
diskMaxUsedSpaceRatio=95

1.7 文件夹赋权

chmod -R 777 /home/rocketmq/

1.8 启动容器

1.8.1 启动NameServer容器

docker run -d \
--privileged=true \
--restart=always \
--name nameserver \
-p 9876:9876  \
-v /home/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /home/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
apache/rocketmq:5.1.0 sh mqnamesrv

1.8.2 启动Broker容器

docker run -d \
--restart=always \
--name broker  \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /home/rocketmq/broker/logs:/root/logs \
-v /home/rocketmq/broker/store:/root/store \
-v /home/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /home/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
apache/rocketmq:5.1.0 \
sh mqbroker -c /home/rocketmq/broker.conf

1.9 查看当前容器

docker ps

在这里插入图片描述

2 部署RocketMQ可视化控制台

2.1 查看镜像

docker search apacherocketmq/rocketmq-dashboard

2.2 拉取镜像(默认最新版本)

docker pull apacherocketmq/rocketmq-dashboard

2.3 启动容器

# 你的NameServer服务器公网IP地址与端口号
docker run -d \
--restart=always \
--name dashboard \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8082:8080 \
apacherocketmq/rocketmq-dashboard

2.4 查看当前容器

docker ps

在这里插入图片描述

3 开放对应端口

在这里插入图片描述

4 访问可视化控制台

# 你的服务器公网IP地址
http://127.0.0.1:8082/

在这里插入图片描述

三、代码测试

1 根据项目信息搭建完成模块

2 补充配置信息(由于SpringBoot3.0以上版本所引发)

2.1 在resource下创建META-INF文件夹

2.2 在META-INF文件夹下创建spring文件夹

2.3 创建文件

# 文件名信息
org.springframework.boot.autoconfigure.AutoConfiguration.imports

# 文件内容
org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration

在这里插入图片描述

3 创建消息发送测试类

package com.catalpa.study.test;
 
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController {
 
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
 
    @RequestMapping("/test")
    public String order() {
        String test = "123测试";
        rocketMQTemplate.convertAndSend("ORDER_TOPIC", test);
        return test;
    }
}

4 创建消费测试类

package com.catalpa.study.listener;

import org.apache.rocketmq.spring.annotation.ConsumeMode;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;

@Service
@RocketMQMessageListener(topic = "ORDER_TOPIC", consumerGroup = "BREAD_ORDER_GROUP", consumeMode = ConsumeMode.ORDERLY)
public class NormalRocketMqListener implements RocketMQListener<String> {
    @Override
    public void onMessage(String s) {
        System.out.println("普通订阅-接收到的信息:{}"+ s);
    }
}

5 测试

5.1 启动项目

5.2 访问消息发送测试接口

http://127.0.0.1:8081/test

在这里插入图片描述

5.3 测试成功

在这里插入图片描述

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
要使用RocketMQ Docker镜像部署RocketMQ,你可以按照以下步骤进行操作: 1. 首先,你需要创建一个用于存储RocketMQ数据的目录。你可以使用以下命令来创建这些目录: ``` mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf ``` 2. 接下来,你需要运行`rmqnamesrv`容器来启动RocketMQ的Namesrv服务。你可以使用以下命令来运行容器: ``` docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876 -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv ``` 3. 然后,你需要运行`rmqbroker`容器来启动RocketMQ的Broker服务。你可以使用以下命令来运行容器: ``` docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /docker/rocketmq/conf/broker.conf:/opt/docker/rocketmq/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/docker/rocketmq/broker.conf ``` 通过按照以上步骤,你可以使用RocketMQ Docker镜像来部署RocketMQ并运行Namesrv和Broker服务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装RocketMQ详细教程](https://blog.csdn.net/w598882992/article/details/127509962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Rocketmq详解02-mq安装](https://blog.csdn.net/a2868221132/article/details/118156511)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布熬夜了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值