springCloud_day06

张开发
2026/4/7 10:42:34 15 分钟阅读

分享文章

springCloud_day06
目录MQ 入门 - 01.MQ 课程介绍MQ 入门 - 02. 初识 MQ - 同步调用优缺点MQ 入门 - 03. 初识 MQ - 异步调用优缺点MQ 入门 - 04. 初识 MQ - 技术选型MQ 入门 - 05.RabbitMQ - 安装部署问题:设置的账户密码是什么?MQ 入门 - 06.RabbitMQ - 快速入门MQ 入门 - 07.RabbitMQ - 数据隔离MQ 入门 - 08.Java 客户端 - 快速入门问题:Java客户端使用mq流程?问题:mq解决的是什么问题?MQ 入门 - 09.Java 客户端 - WorkQueue问题:workqueue解决的是什么问题?MQ 入门 - 10.Java 客户端 - Fanout 交换机MQ 入门 - 11.Java 客户端 - Direct 交换机MQ 入门 - 12.Java 客户端 - Topic 交换机问题:交换机怎么绑定队列,消费者怎么监听队列,怎么发送消息?MQ 入门 - 13.Java 客户端 - 基于 Bean 声明队列交换机问题:如何基于代码声明队列交换机问题:一般是在消费者还是生产者那一端声明队列和交换机MQ 入门 - 14.Java 客户端 - 基于注解声明队列交换机MQ 入门 - 15.Java 客户端 - 消息转换器MQ 入门 - 16. 业务改造末尾页MQ 入门 - 01.MQ 课程介绍MQ 入门 - 02. 初识 MQ - 同步调用优缺点MQ 入门 - 03. 初识 MQ - 异步调用优缺点MQ 入门 - 04. 初识 MQ - 技术选型MQ 入门 - 05.RabbitMQ - 安装部署问题:设置的账户密码是什么?itheima123321MQ 入门 - 06.RabbitMQ - 快速入门MQ 入门 - 07.RabbitMQ - 数据隔离admin里面能创建用户,和虚拟机MQ 入门 - 08.Java 客户端 - 快速入门问题:Java客户端使用mq流程?问题:mq解决的是什么问题?1. 解决 “同步调用太慢、太脆弱” 的问题你刚才的支付业务扣余额user-service改支付单pay-service改订单状态trade-service如果全部同步调用任何一个服务慢 → 整个支付就慢任何一个服务挂 → 支付直接失败链路越长越容易超时、异常MQ 就是把后面不需要立刻执行的步骤变成异步处理。2. 削峰填谷高并发必备秒杀、大促时订单瞬间暴增同步调用 → 数据库、服务直接被冲垮MQ → 先把消息存起来慢慢消费服务器压力平稳不会雪崩。3. 解耦服务之间不强依赖原来pay-service 必须强依赖 trade-service必须等它执行完。用 MQ 后pay-service 发个消息就不管了trade-service 慢慢消费trade-service 挂了也不影响支付流程恢复后继续消费数据最终一致这就是微服务架构里非常重要的 “解耦”。4. 保证最终一致性比分布式事务更轻Seata 是强一致性性能一般。MQ 是最终一致性性能高很多。支付流程最佳实践支付核心流程扣钱同步执行后续通知更新订单、通知物流、积分丢 MQ 异步执行既快又稳定还不容易挂。5. 流量控制防止数据库被打挂同步调用时10000 个请求同时进来 → 10000 个线程同时打数据库MQ控制消费者线程数 → 数据库压力永远可控。6. 重试机制网络抖动不怕调用远程服务超时、网络波动同步调用 → 直接失败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 客户端 - 基于注解声明队列交换机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扫描到怎么扫描到的org.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 启动时自动加载下面这些配置类3. 为什么要写在这里因为common 是公共模块其他模块item、trade、pay、user都想自动用里面的配置不需要自己再写一遍SpringBoot 规定想要让别的模块自动加载配置类必须写在 spring.factories 里。你问到了SpringBoot 最核心、最容易被忽略的机制我用最直白的话给你讲透结论先说你在common里写的配置类并不是靠 ComponentScan 扫描到的而是靠spring.factoriesEnableAutoConfiguration自动装配被 Spring 加载的。问题:怎么将.xml中的配置抽取到nacos的公共配置以及怎么使用shared-mq.yaml 放到 Nacos → 所有服务引入 shared-configs → 全局统一 MQ 配置末尾页本课程系统介绍了消息队列(MQ)的核心概念与应用实践。内容涵盖MQ基础知识同步/异步调用对比、技术选型、RabbitMQ部署使用安装配置、数据隔离、Java客户端开发快速入门、WorkQueue、三种交换机模式、消息转换器及业务改造等核心知识点。重点讲解了MQ在解决系统解耦、流量削峰、最终一致性等场景中的应用价值并通过代码示例详细演示了队列声明、消息监听和发送等关键操作。课程还涉及SpringBoot自动装配机制和Nacos配置管理等实用技巧帮助开发者快速掌握MQ在企业级应用中的实践方法。

更多文章