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

样例代码

涉及到的项目样例代码均可以从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分钟内没有被正常消费则转移到死信队列里再进行消费。

相关推荐
一 乐14 分钟前
交通感知与车路协同系统|基于springboot + vue交通感知与车路协同系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·交通感知与车路协同系统
Java面试题总结24 分钟前
FVG3 构建系统 MinGW 配置问题排查文档
java
乐之者v31 分钟前
游标分批查询,提高查询性能
java
城管不管38 分钟前
嵌入模型Embedding Model
java·开发语言·python·embedding·嵌入模型
斯维赤40 分钟前
每天学习一个小算法:选择排序
java·学习·算法
book123_0_991 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
NCIN EXPE1 小时前
使用Springboot + netty 打造聊天服务(一)
java·spring boot·后端
Lands1 小时前
推荐一下配合agent开发的工具
设计模式·agent
爱学习的小囧1 小时前
ESXi性能历史怎么监控?2种方法,图形化+命令行全覆盖
java·linux·运维·服务器·网络·esxi·esxi8.0
逻辑驱动的ken1 小时前
Java高频面试考点场景题11
java·深度学习·面试·职场和发展·高效学习