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

样例代码

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

相关推荐
期待のcode4 分钟前
static关键字
java·后端
百***24376 分钟前
小米MiMo-V2-Flash深度解析:国产开源大模型的轻量化落地革命
java·人工智能·gpt
SimonKing12 分钟前
Java汉字转拼音的四种方案,99%的开发场景都够用了!
java·后端·程序员
啊西:13 分钟前
SuperMap iClient3D for WebGL与iObjects Java结合实现前端动态绘制面与体的布尔运算
java·3d·webgl
s1mple“”16 分钟前
基于电商场景的Java全栈面试实录:Spring Boot+微服务+AI技术深度解析
java·spring boot·微服务·高并发·分布式架构·电商系统·ai技术
Nakkhon19 分钟前
软件工程实践——个人技术博客
java·开发语言
好奇的菜鸟24 分钟前
Windows 环境下使用 Docker 部署 Java 开发中间件完全指南
java·windows·docker
代码or搬砖25 分钟前
== 和 equals() 的区别
java·开发语言·jvm
koping_wu30 分钟前
【leetcode】排序数组:快速排序、堆排序、归并排序
java·算法·leetcode
咘噜biu34 分钟前
Java SpringBoot后端Filter包装请求(新增/覆盖请求头)
java·spring boot·filter·requestwrapper