组件以二方包的形式提供,使用方可以直接在 maven 中添加相关依赖,支持自定义配置,本质上是一个 springboot starter。

对于所有需要一致性的操作,我们都将其封装成一个任务,支持持久化到 MySQL 中。
本文主要聊一下任务的生命周期。

一、Starter 初始化

  1. 项目引入 Starter 依赖

  2. @SpringBootApplication@EnableAutoConfigurationAutoConfigurationImportSelector

  3. 读取 spring.factories/.imports 找到自动配置类

  4. 解析 @Conditional 系列注解决定是否生效

  5. 注册 Bean 到 Spring 容器

  6. 绑定 application.yml 配置到属性类

  7. 初始化 Bean

二、持久化任务

  1. 基于 SpringAOP 机制拦截@WesConsistencyTask 注解修饰的方法。
  2. 解析注解配置、方法全路径名称、参数列表等数据,并封装为任务。
  3. 将任务持久化到数据库。

三、执行任务

  1. 扫表倒序读取未完成的任务
  2. 根据任务执行模式判断是否立即执行(异步执行)
  3. 标记任务状态为执行中
  4. 反射执行任务
  5. 标记任务状态为执行成功
  6. 如果执行失败,任务标记为执行失败,更新重试次数,等待下次重试