业务拦截
业务发起拦截
业务系统集成txle的关键一步是业务发起方法上添加注解@SagaStart,代表该方法使用全局事务。
txle将会对带有@SagaStart注解的所有方法进行拦截。
拦截业务后,开启全局事务,并将其交由事务管理器进行管理
接着,执行业务发起函数中的相关子业务程序。
ps:开关全局事务/子事务均需交由事务管理器进行管理。
子业务拦截
- 业务系统集成txle关键的第二步是在子业务方法上添加注解@Compensable或@AutoCompensable,代表该子业务方法使用全局事务的手动补偿或自动补偿功能。
- txle将会对带有@Compensable或@AutoCompensable注解的所有方法进行拦截。
- 拦截子业务方法后,开启全局事务下的子事务,并与当前全局事务进行关联。
- 接着,执行子业务中的相关程序(如操作数据库等)。
- 每个子业务执行完成后,需关闭当前子业务对应的子事务。
- 待所有子业务均执行完成后,关闭全局事务,整个全局事务视为完成。
SQL拦截
全局事务除了对业务方法进行拦截,还会对业务执行的SQL进行拦截,但不会影响业务SQL的正常执行,主要是为了实现自动补偿机制,以及统计SQL的耗时,便于系统性能排查。