目录
[MQ 入门 - 01.MQ 课程介绍](#MQ 入门 - 01.MQ 课程介绍)
[MQ 入门 - 02. 初识 MQ - 同步调用优缺点](#MQ 入门 - 02. 初识 MQ - 同步调用优缺点)
[MQ 入门 - 03. 初识 MQ - 异步调用优缺点](#MQ 入门 - 03. 初识 MQ - 异步调用优缺点)
[MQ 入门 - 04. 初识 MQ - 技术选型](#MQ 入门 - 04. 初识 MQ - 技术选型)
[MQ 入门 - 05.RabbitMQ - 安装部署](#MQ 入门 - 05.RabbitMQ - 安装部署)
[MQ 入门 - 06.RabbitMQ - 快速入门](#MQ 入门 - 06.RabbitMQ - 快速入门)
[MQ 入门 - 07.RabbitMQ - 数据隔离](#MQ 入门 - 07.RabbitMQ - 数据隔离)
[MQ 入门 - 08.Java 客户端 - 快速入门](#MQ 入门 - 08.Java 客户端 - 快速入门)
[MQ 入门 - 09.Java 客户端 - WorkQueue](#MQ 入门 - 09.Java 客户端 - WorkQueue)
[MQ 入门 - 10.Java 客户端 - Fanout 交换机](#MQ 入门 - 10.Java 客户端 - Fanout 交换机)
[MQ 入门 - 11.Java 客户端 - Direct 交换机](#MQ 入门 - 11.Java 客户端 - Direct 交换机)
[MQ 入门 - 12.Java 客户端 - Topic 交换机](#MQ 入门 - 12.Java 客户端 - Topic 交换机)
问题:交换机怎么绑定队列,消费者怎么监听队列,怎么发送消息?
[MQ 入门 - 13.Java 客户端 - 基于 Bean 声明队列交换机](#MQ 入门 - 13.Java 客户端 - 基于 Bean 声明队列交换机)
[MQ 入门 - 14.Java 客户端 - 基于注解声明队列交换机](#MQ 入门 - 14.Java 客户端 - 基于注解声明队列交换机)
[MQ 入门 - 15.Java 客户端 - 消息转换器](#MQ 入门 - 15.Java 客户端 - 消息转换器)
[MQ 入门 - 16. 业务改造](#MQ 入门 - 16. 业务改造)
MQ 入门 - 01.MQ 课程介绍

MQ 入门 - 02. 初识 MQ - 同步调用优缺点


MQ 入门 - 03. 初识 MQ - 异步调用优缺点



MQ 入门 - 04. 初识 MQ - 技术选型


MQ 入门 - 05.RabbitMQ - 安装部署
问题:设置的账户密码是什么?
itheima
123321

MQ 入门 - 06.RabbitMQ - 快速入门

MQ 入门 - 07.RabbitMQ - 数据隔离


admin里面能创建用户,和虚拟机
MQ 入门 - 08.Java 客户端 - 快速入门


问题:Java客户端使用mq流程?
问题:mq解决的是什么问题?
- 解决 "同步调用太慢、太脆弱" 的问题
你刚才的支付业务:
扣余额(user-service)
改支付单(pay-service)
改订单状态(trade-service)
如果全部同步调用:
任何一个服务慢 → 整个支付就慢
任何一个服务挂 → 支付直接失败
链路越长,越容易超时、异常
MQ 就是把后面不需要立刻执行的步骤,变成异步处理。
- 削峰填谷(高并发必备)
秒杀、大促时,订单瞬间暴增:
同步调用 → 数据库、服务直接被冲垮
MQ → 先把消息存起来,慢慢消费服务器压力平稳,不会雪崩。
- 解耦:服务之间不强依赖
原来:pay-service 必须强依赖 trade-service,必须等它执行完。
用 MQ 后:
pay-service 发个消息就不管了
trade-service 慢慢消费
trade-service 挂了也不影响支付流程
恢复后继续消费,数据最终一致
这就是微服务架构里非常重要的 "解耦"。
- 保证最终一致性(比分布式事务更轻)
Seata 是强一致性,性能一般。MQ 是最终一致性,性能高很多。
支付流程最佳实践:
支付核心流程(扣钱)同步执行
后续通知(更新订单、通知物流、积分)丢 MQ 异步执行
既快,又稳定,还不容易挂。
- 流量控制,防止数据库被打挂
同步调用时:10000 个请求同时进来 → 10000 个线程同时打数据库
MQ:控制消费者线程数 → 数据库压力永远可控。
- 重试机制(网络抖动不怕)
调用远程服务超时、网络波动:
同步调用 → 直接失败
MQ → 自动重试,直到成功
对支付、订单这种不能丢数据的场景非常重要。
最简单一句话总结
使用 MQ,就是为了让系统更快、更稳、更松耦合,能抗高并发,还能保证数据不丢、最终一致。
MQ 入门 - 09.Java 客户端 - WorkQueue

问题:workqueue解决的是什么问题?
WorkQueue 解决的是:把 "非核心、非实时" 的任务,从主流程剥离,通过异步队列,实现 "快速响应、流量削峰、数据安全、服务解耦" 的目标。



MQ 入门 - 10.Java 客户端 - Fanout 交换机



MQ 入门 - 11.Java 客户端 - Direct 交换机


MQ 入门 - 12.Java 客户端 - Topic 交换机


问题:交换机怎么绑定队列,消费者怎么监听队列,怎么发送消息?
在mq的exchange里面bind就可以绑定队列
使用注解@RabbitListener(queue="")就可以让消费者方法监听指定的队列
使用@RabbitTemplate里面的converAndSend(队列名,key,信息)

MQ 入门 - 13.Java 客户端 - 基于 Bean 声明队列交换机
问题:如何基于代码声明队列交换机?
问题:一般是在消费者还是生产者那一端声明队列和交换机?
消费者
MQ 入门 - 14.Java 客户端 - 基于注解声明队列交换机


java
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "direct.queue1"),
exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
key = {"red", "blue"}
))
public void listenDirectQueue1(String msg){
System.out.println("消费者1接收到direct.queue1的消息:【" + msg + "】");
}
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "direct.queue2"),
exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
key = {"red", "yellow"}
))
public void listenDirectQueue2(String msg){
System.out.println("消费者2接收到direct.queue2的消息:【" + msg + "】");
}
MQ 入门 - 15.Java 客户端 - 消息转换器



MQ 入门 - 16. 业务改造

问题:我在common配置的配置类想在别的模块使用,那必须得被spring扫描到,怎么扫描到的?
javaorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.hmall.common.config.MyBatisConfig,\ com.hmall.common.config.MvcConfig,\ com.hmall.common.config.JsonConfig,\ com.hmall.common.config.MqConfig 我要让 SpringBoot 启动时,自动加载下面这些配置类!
- 为什么要写在这里?
因为:
common 是公共模块,其他模块(item、trade、pay、user)都想自动用里面的配置,不需要自己再写一遍!
SpringBoot 规定:想要让别的模块自动加载配置类,必须写在 spring.factories 里。
你问到了SpringBoot 最核心、最容易被忽略的机制,我用最直白的话给你讲透:
结论先说
你在
common里写的配置类,并不是靠 @ComponentScan 扫描到的 ,而是靠spring.factories+@EnableAutoConfiguration自动装配 被 Spring 加载的。
问题:怎么将.xml中的配置抽取到nacos的公共配置以及怎么使用?
shared-mq.yaml 放到 Nacos → 所有服务引入 shared-configs → 全局统一 MQ 配置!
末尾页
本课程系统介绍了消息队列(MQ)的核心概念与应用实践。内容涵盖MQ基础知识(同步/异步调用对比、技术选型)、RabbitMQ部署使用(安装配置、数据隔离)、Java客户端开发(快速入门、WorkQueue、三种交换机模式)、消息转换器及业务改造等核心知识点。重点讲解了MQ在解决系统解耦、流量削峰、最终一致性等场景中的应用价值,并通过代码示例详细演示了队列声明、消息监听和发送等关键操作。课程还涉及SpringBoot自动装配机制和Nacos配置管理等实用技巧,帮助开发者快速掌握MQ在企业级应用中的实践方法。







