贯穿设计模式-装饰者模式

样例代码

涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取

需求

旨在不改变一个对象逻辑的前提下,为这个对象添加其他额外的职责

  1. 在业务投放的同时,需要给用户发放红包或者积分,在不改动的投放逻辑的前提下,增加一条异步的链路 → 装饰者模式
  2. 新增加的异步链路对支付主链路来说是弱依赖的,在业务高峰期可以将其功能下掉或30分钟之后再进行同步。
  3. 功能正常/下掉/30分钟之后再同步 → Apollo配置选项提供feature开关
  4. 30分钟同步 → 引入MQ死信队列来解决

UML图

Decorator实现了Component接口,又是和Component是组合关系

MQ死信队列解决延时任务方案

原理:NormalMQ Queue中没有配置消费者,发送消息设置了30分钟的最大消费时间,如果30分钟内没有被正常消费则转移到死信队列里再进行消费。

相关推荐
David爱编程34 分钟前
指令重排与内存屏障:并发语义的隐形守护者
java·后端
郝学胜-神的一滴1 小时前
C++ Core Guidelines 核心理念
开发语言·c++·设计模式·代码规范
ZZHow10241 小时前
Java项目-苍穹外卖_Day1
java·spring boot·web
带刺的坐椅2 小时前
老码农教你 Solon Web Context-Path 的两种配置方式
java·nginx·tomcat·web·solon
西红柿维生素2 小时前
设计模式之责任链模式
设计模式·责任链模式
ZZHow10242 小时前
Java项目-苍穹外卖_Day2
java·spring boot·web
float_六七2 小时前
Spring Boot 3为何强制要求Java 17?
java·spring boot·后端
叫我阿柒啊3 小时前
从Java全栈到前端框架的深度探索
java·微服务·typescript·vue3·springboot·前端开发·全栈开发
架构师沉默3 小时前
Java 开发者别忽略 return!这 11 种写法你写对了吗?
java·后端·架构
RainbowJie13 小时前
Gemini CLI 与 MCP 服务器:释放本地工具的强大潜力
java·服务器·spring boot·后端·python·单元测试·maven