数据一致性组件之任务生命周期
组件以二方包的形式提供,使用方可以直接在 maven 中添加相关依赖,支持自定义配置,本质上是一个 springboot starter。
对于所有需要一致性的操作,我们都将其封装成一个任务,支持持久化到 MySQL 中。
本文主要聊一下任务的生命周期。
一、Starter 初始化
-
项目引入 Starter 依赖
-
@SpringBootApplication
→@EnableAutoConfiguration
→AutoConfigurationImportSelector
-
读取
spring.factories
/.imports
找到自动配置类 -
解析
@Conditional
系列注解决定是否生效 -
注册 Bean 到 Spring 容器
-
绑定
application.yml
配置到属性类 -
初始化 Bean
二、持久化任务
- 基于 SpringAOP 机制拦截
@WesConsistencyTask
注解修饰的方法。 - 解析注解配置、方法全路径名称、参数列表等数据,并封装为任务。
- 将任务持久化到数据库。
三、执行任务
- 扫表倒序读取未完成的任务
- 根据任务执行模式判断是否立即执行(异步执行)
- 标记任务状态为执行中
- 反射执行任务
- 标记任务状态为执行成功
- 如果执行失败,任务标记为执行失败,更新重试次数,等待下次重试