spring cloud alibaba2022版本集成RocketMQ
目录一、安装部署RocketMQ二、项目添加依赖包2.1、pom.xml引入RocketMQ依赖包2.2、配置新增三、项目编写业务代码3.1、新增订单和取消订单方法做消息通知四、测试消息发送与消费4.1、顺序消费4.2、普通消费spring cloud alibaba2022版本分布式框架搭建示例之集成RocketMQ。一、安装部署RocketMQ1.1、下载包安装地址下载 | RocketMQ我这里下载了5.5.0版本解压后配置ROCKET_HOME环境变量,指定rocketmq的安装包文件路径。在rocketMQ安装包的bin目录下找到 runserver.cmd 文件右键「编辑」用记事本 /或Notepad 打开RocketMQ 默认配置内存要求比较高需先修改启动脚本以便可以在个人电脑上跑起来.。上图中的两个地方改成如下set JAVA_OPT%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize128m -XX:MaxMetaspaceSize320m找到mqnamesrv.cmd文件双击运行。新起一个cmd窗口在安装包的bin目录下执行命令关联 NameServer 允许自动创建 Topicmqbroker -n 127.0.0.1:9876 autoCreateTopicEnabletrue启动成功如下二、项目添加依赖包补充——父项目pom.xml?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdorg.example/groupId artifactIdspring-cloud-alibaba/artifactId version1.0-SNAPSHOT/version packagingpom/packaging modules modulegoods-service/module moduleorder-service/module modulegateway-service/module /modules properties maven.compiler.source17/maven.compiler.source maven.compiler.target17/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding spring-boot.version3.0.13/spring-boot.version spring-cloud.version2022.0.2/spring-cloud.version spring-cloud-starter-bootstrap.version3.1.5/spring-cloud-starter-bootstrap.version spring-cloud-alibaba.version2022.0.0.0/spring-cloud-alibaba.version /properties dependencyManagement dependencies !-- Spring Boot 3.x -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version${spring-boot.version}/version typepom/type scopeimport/scope /dependency !-- Spring Cloud 2022.x -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring-cloud.version}/version typepom/type scopeimport/scope /dependency !-- Spring Cloud Bootstrap 3.x -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-bootstrap/artifactId version${spring-cloud-starter-bootstrap.version}/version /dependency !-- Alibaba Cloud 2.x -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version typepom/type scopeimport/scope /dependency !-- Nacos注册中心 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId version${spring-cloud-alibaba.version}/version /dependency !-- Nacos配置中心 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId version${spring-cloud-alibaba.version}/version /dependency !-- Spring Boot 3.x -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId version${spring-boot.version}/version /dependency !-- Spring Boot 3.x -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId version${spring-boot.version}/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.30/version /dependency !-- RocketMQ -- dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-spring-boot-starter/artifactId version2.3.4/version scopecompile/scope exclusions !-- 排出低版本冲突 -- exclusion groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId /exclusion /exclusions /dependency dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId version5.3.1/version /dependency /dependencies /dependencyManagement /project2.1、pom.xml引入RocketMQ依赖包SpringCloud Alibaba2022版本对应rocketMQ版本如下dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-spring-boot-starter/artifactId version2.3.4/version scopecompile/scope exclusions !-- 排出低版本冲突 -- exclusion groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId /exclusion /exclusions /dependency dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId version5.3.1/version /dependency2.2、配置新增rocketmq: name-server: 127.0.0.1:9876 # 生产者配置 producer: group: order-group retry-times-when-send-failed: 3 send-message-timeout: 3000 compress-message-body-threshold: 4096 # 消息压缩阈值4KB # 消费者配置 consumer: group: order-group consume-thread-max: 20 # 最大消费线程数三、项目编写业务代码3.1、新增订单和取消订单方法做消息通知消息发送方package org.example.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import net.minidev.json.JSONObject; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.example.controller.req.OrderRequest; import org.example.entity.Order; import org.example.feign.GoodsFeignClient; import org.example.feign.res.GoodsResponse; import org.example.mapper.OrderMapper; import org.example.service.IOrderService; import org.example.service.impl.dto.GoodsDTO; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.Objects; import java.util.Random; /** * p * 服务实现类 * /p * * author ChengJiangBo * since 2026-07-02 */ Slf4j Service public class OrderServiceImpl extends ServiceImplOrderMapper, Order implements IOrderService { Resource GoodsFeignClient goodsFeignClient; Resource RocketMQTemplate rocketMQTemplate; Override public boolean save(OrderRequest orderRequest) { Order order new Order(); if(Objects.nonNull(orderRequest.getGoodsId())){ GoodsResponse goodsResponse goodsFeignClient.getGoodsById(orderRequest.getGoodsId()); if(Objects.nonNull(goodsResponse)){ if(goodsResponse.getPrice().compareTo(new BigDecimal(0)) 0){ log.info(未查询到商品下单失败); return false; } order.setGoodsPrice(goodsResponse.getPrice()); order.setGoodsNum(orderRequest.getGoodsNum()); order.setGoodsVersion(goodsResponse.getGoodsVersion()); order.setAmount(new BigDecimal(orderRequest.getGoodsNum()).multiply(goodsResponse.getPrice())); order.setGoodsId(goodsResponse.getId()); order.setGoodsVersion(goodsResponse.getGoodsVersion()); SimpleDateFormat sdf new SimpleDateFormat(yyyyMMddHHmmss); order.setOrderNo( sdf.format(new Date()) new Random().nextInt(10000000) ); order.setCreateTime(LocalDateTime.now()); order.setUpdateTime(LocalDateTime.now()); boolean result super.save(order); log.info(下单成功订单编号{}, order.getOrderNo()); if (result) { GoodsDTO goodsDTO new GoodsDTO(); goodsDTO.setGoodsId(order.getGoodsId()); goodsDTO.setGoodsNum(order.getGoodsNum()); goodsDTO.setOrderNo(order.getOrderNo()); rocketMQTemplate.asyncSend(goods-topic:inventory-update, order, new SendCallback() { Override public void onSuccess(SendResult sendResult) { log.info(异步发送成功发送结果{}, sendResult); } Override public void onException(Throwable e) { log.info(异步发送失败发送结果{}, e); } }); } return result; } } return false; } Override public boolean cancel(String orderNo) { log.info(取消订单订单编号{}, orderNo); Order order getOne(new QueryWrapperOrder().eq(order_no, orderNo)); if(Objects.nonNull(order)){ GoodsResponse goods goodsFeignClient.getGoodsById(order.getGoodsId()); if(Objects.nonNull(goods)){ rocketMQTemplate.asyncSend(order-topic:order_cancel, JSON.toJSONString(goods), new SendCallback() { Override public void onSuccess(SendResult sendResult) { log.info(异步发送成功发送结果{}, sendResult); order.setOrderStatus(2); // Set order status to canceled updateById(order); } Override public void onException(Throwable e) { log.info(异步发送失败发送结果{}, e); } }); } } return true; } }package org.example.service.impl.dto; import lombok.Getter; import lombok.Setter; Setter Getter public class GoodsDTO{ private Long goodsId; private Integer goodsNum; private String orderNo; Override public String toString() { return GoodsDTO{ goodsId goodsId , goodsNum goodsNum , orderNo orderNo \ }; } }消息接收方rocketmq: name-server: 127.0.0.1:9876 # 生产者配置 producer: group: goods-group retry-times-when-send-failed: 3 send-message-timeout: 3000 compress-message-body-threshold: 4096 # 消息压缩阈值4KB # 消费者配置 consumer: group: goods-group consume-thread-max: 20 # 最大消费线程数新增两个消费者如下package org.example.application; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyStatus; import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly; import org.apache.rocketmq.common.consumer.ConsumeFromWhere; import org.apache.rocketmq.spring.annotation.ConsumeMode; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.apache.rocketmq.spring.support.RocketMQConsumerLifecycleListener; import org.example.application.dto.GoodsDTO; import org.springframework.stereotype.Component; /** * 商品模块的MQ消费者 */ Slf4j Component RocketMQMessageListener(topic goods-topic, consumerGroup test-group, consumeMode ConsumeMode.ORDERLY ) public class GoodsMQConsumer implements RocketMQListenerGoodsDTO, RocketMQConsumerLifecycleListenerDefaultMQPushConsumer { Override public void onMessage(GoodsDTO message) { log.info(顺序消费消息{}, message); // 手动处理消息需确保幂等性 } Override public void prepareStart(DefaultMQPushConsumer consumer) { //手动配置ACK(默认是自动ACK) consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); // 从最后一条消息开始消费 consumer.registerMessageListener((MessageListenerOrderly) (msgs, context)-{ // 顺序消费的手动ACK逻辑 context.setAutoCommit(true); // 自动提交顺序消费建议开启 return ConsumeOrderlyStatus.SUCCESS; }); } }package org.example.application; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.ConsumeMode; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Component; /** * 商品模块的MQ消费者 */ Slf4j Component RocketMQMessageListener( topic order-topic, consumerGroup test-group, selectorExpression order_refund || order_cancel, // 过滤多个Tag consumeMode ConsumeMode.CONCURRENTLY, // 并发消费默认 messageModel MessageModel.CLUSTERING // 集群消费默认 ) public class OrderMQConsumer implements RocketMQListenerString { Override public void onMessage(String message) { log.info(消费消息{}, message); // 手动处理消息需确保幂等性 } }四、测试消息发送与消费4.1、顺序消费apifox执行创建订单接口order-service控制台打印结果goods-service控制台打印结果4.2、普通消费执行取掉订单接口order-service控制台打印结果goods-service控制台打印结果

相关新闻

Windows下CMake配置全攻略:从环境搭建到项目构建实战

Windows下CMake配置全攻略:从环境搭建到项目构建实战

1. 项目概述:为什么Windows下的CMake配置是个“技术活”?如果你在Windows上尝试编译过一些C/C的开源项目,大概率会碰到一个叫CMake的东西。它可能出现在项目根目录,是一个叫CMakeLists.txt的文件。第一次接触时,你可能…

2026/8/8 11:30:05 阅读更多 →
终极无损音乐下载指南:如何高效使用qobuz-dl获取Hi-Res音频资源

终极无损音乐下载指南:如何高效使用qobuz-dl获取Hi-Res音频资源

终极无损音乐下载指南:如何高效使用qobuz-dl获取Hi-Res音频资源 【免费下载链接】qobuz-dl A complete Lossless and Hi-Res music downloader for Qobuz 项目地址: https://gitcode.com/gh_mirrors/qo/qobuz-dl qobuz-dl是一款功能强大的无损音乐下载工具&a…

2026/8/8 11:30:05 阅读更多 →
Nginx 从入门到精通:一站式 Web 服务器实战指南

Nginx 从入门到精通:一站式 Web 服务器实战指南

nginx 服务介绍 HTTP 概述 HTTP 全称是 HyperText Transfer Protocal,即:超文本传输协议,从 1990 年开始就在 WWW 上广泛应用,是现今在 WWW 上应用最多的协议,HTTP 是应用层协议,当你上网浏览网页的时候&…

2026/8/8 11:29:04 阅读更多 →

最新新闻

Recaf:现代化Java字节码编辑器的终极实践指南

Recaf:现代化Java字节码编辑器的终极实践指南

Recaf:现代化Java字节码编辑器的终极实践指南 【免费下载链接】Recaf The modern Java bytecode editor 项目地址: https://gitcode.com/gh_mirrors/re/Recaf 理念解析:为什么需要Java字节码编辑器? 在Java开发与逆向工程领域&#x…

2026/8/8 12:26:28 阅读更多 →
欢迎使用Markdown Viewer

欢迎使用Markdown Viewer

欢迎使用Markdown Viewer 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 这是一个测试文档,用于验证扩展是否正常工作。 功能列表 ✅ 标题渲染✅ 列表显示✅ 代码高…

2026/8/8 12:26:28 阅读更多 →
如何用LunaTranslator轻松玩转日文游戏:免费开源游戏翻译工具完全指南

如何用LunaTranslator轻松玩转日文游戏:免费开源游戏翻译工具完全指南

如何用LunaTranslator轻松玩转日文游戏:免费开源游戏翻译工具完全指南 【免费下载链接】LunaTranslator 视觉小说翻译器 / Visual Novel Translator 项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator 你是否曾经因为语言障碍而错过了心仪的…

2026/8/8 12:26:28 阅读更多 →
企业级多智能体平台实战指南:AgentScope 2.0如何重构AI应用开发范式

企业级多智能体平台实战指南:AgentScope 2.0如何重构AI应用开发范式

企业级多智能体平台实战指南:AgentScope 2.0如何重构AI应用开发范式 【免费下载链接】agentscope Build and run agents you can see, understand and trust. 项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope 在当今AI技术快速演进的时代&…

2026/8/8 12:26:28 阅读更多 →
如何让Windows文件搜索速度提升10倍?EverythingToolbar完整指南

如何让Windows文件搜索速度提升10倍?EverythingToolbar完整指南

如何让Windows文件搜索速度提升10倍?EverythingToolbar完整指南 【免费下载链接】EverythingToolbar Everything integration for the Windows taskbar. 项目地址: https://gitcode.com/gh_mirrors/eve/EverythingToolbar 你是否曾经因为Windows自带的文件搜…

2026/8/8 12:26:28 阅读更多 →
AgentScope 2.0:构建企业级多智能体应用的高效平台与架构解析

AgentScope 2.0:构建企业级多智能体应用的高效平台与架构解析

AgentScope 2.0:构建企业级多智能体应用的高效平台与架构解析 【免费下载链接】agentscope Build and run agents you can see, understand and trust. 项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope 在人工智能技术快速演进的今天&#xff…

2026/8/8 12:25:28 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →