Java 项目教程《黑马商城-MQ 篇》,分布式架构项目,从开发到部署
一、参考资料
【黑马程序员SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)】 https://www.bilibili.com/video/BV1S142197x7/?p=85\&share_source=copy_web\&vd_source=855891859b2dc554eace9de3f28b4528
黑马商城项目 Gitee 地址 https://gitee.com/yangjunbo-jetli/hmall.git
RabbitMQ 测试项目 Gitee 地址 https://gitee.com/yangjunbo-jetli/mq-demo.git
二、笔记总结-基础篇
01、MQ 课程结束


02、同步调用优缺点



03、异步调用优缺点





04、技术选型

05、安装部署



shell
docker run \
-e RABBITMQ_DEFAULT_USER=itheima \
-e RABBITMQ_DEFAULT_PASS=123321 \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
-p 15672:15672 \
-p 5672:5672 \
--network hm-net\
-d \
rabbitmq:3.8-management





06、快速入门







07、数据隔离





08、Java 客户端-快速入门



















09、WorkQueue









10、Fanout 交换机










11、Direct 交换机








12、Topic 交换机








13、基于 Bean 声明队列交换机






14、基于注解声明队列交换机




15、消息转换器












16、业务改造












三、笔记总结-高级篇
01、课程介绍


02、发送者可靠性-发送者重连机制





03、发送者可靠性-发送者确认机制




04、发送者可靠性-发送者确认的代码实现





05、MQ 可靠性-数据持久化











06、MQ 可靠性-LazyQueue









07、消费者可靠性-消费者确认机制






08、消费者可靠性-消费者失败重试策略










09、消费者可靠性-业务幂等处理








10、延迟消息-什么是延迟消息

11、延迟消息-死信交换机








12、延迟消息-延迟消息插件











13、延迟消息-取消超时订单

















四、AI 简介
🚀 黑马商城微服务实战:RabbitMQ 核心技术与应用
在微服务架构中,服务间的通信是核心痛点。《黑马商城》项目通过引入 RabbitMQ,巧妙地解决了服务耦合、异步处理和流量削峰等问题。本篇教程将带你深入 Spring Cloud 微服务与 RabbitMQ 的整合实战,从底层原理到代码实现,助你掌握企业级消息中间件的落地技巧。
📚 核心学习内容
- SpringAMQP 快速入门
- 基础组件:详解 Exchange(交换机)的四种类型(Fanout、Direct、Topic、Headers)与 Queue(队列)的声明及绑定关系。
- 声明方式 :对比
@Bean声明与@RabbitListener注解声明的优劣,解决多参数绑定的繁琐问题。 - 消息序列化 :针对 JDK 默认序列化存在的"体积大、不安全、可读性差"痛点,实战配置 JSON 序列化 转换器,提升消息传输的效率与可读性。
- 业务改造与异步通信
- 场景实战:以"支付成功后更新订单状态"为例,演示如何将传统的同步 Feign 调用改造为基于 MQ 的异步通知。
- 解耦与容错:通过引入 Direct Exchange,实现精准的消息路由,避免广播带来的资源浪费。
- 代码实现:涵盖生产者(Pay-Service)的消息发送逻辑与消费者(Trade-Service)的监听处理逻辑,确保业务逻辑的平滑迁移。
- 消息可靠性投递(高级篇)
- 生产者可靠性:配置发送者重连机制,应对网络抖动导致的消息发送失败。
- 数据持久化:讲解消息的持久化策略,确保 RabbitMQ 服务重启后消息不丢失(Lazy Queue 的默认优化)。
- 消费者可靠性 :通过
try-catch异常捕获与手动 ACK 机制,防止因消费者异常导致的消息丢失。
- 常见问题与进阶方案
- 幂等性处理:解决网络波动导致的"重复消费"问题(如用户收到多条扣款通知),通过业务逻辑判断或唯一 ID 校验保证数据一致性。
- 延迟消息:引入延迟队列或死信交换机(DLX),实现"订单超时未支付自动取消"的电商核心功能。
- 架构优化 :探讨按业务模块拆分队列(如
order.queue、inventory.queue),实现业务隔离与独立伸缩。
💡 技术亮点
- 全链路实战:不仅讲 API 用法,更注重在 Spring Cloud 微服务环境下的实际业务场景落地。
- 避坑指南:针对初学者常遇到的"消息堆积"、"序列化异常"、"路由键配置错误"等问题提供解决方案。
- 源码与配置:结合 Nacos 配置中心管理 MQ 地址,利用 Docker 快速部署 RabbitMQ 环境,提供可复用的代码片段与配置文件。
适合人群:具备 Java 基础与 Spring Boot 开发经验,正在学习微服务架构或准备面试的开发者。
通过本教程的学习,你将能独立设计并实现高可靠、高性能的消息中间件方案,为你的分布式项目增添核心竞争力。