Lightweight distributed transactions with customized multi-source transaction annotations
发布时间
阅读量:
阅读量
一、背景
在某一方法中,若需同时处理多个或多种类型的数据源,例如一个MySQL数据库、一个MongoDB数据库,或两个不同的MySQL实例时,事务管理器仅能应对特定的单一场景。
- 采用声明式注解@Transactional的方式,无法确保多个数据源的事务回滚操作,其功能仅限于对被标记为@Primary的数据源进行回滚。
- 若选择编程式事务回滚方式,则会导致代码耦合度上升,实现过程较为繁琐且复杂度较高。因此,有必要设计自定义注解以实现对多数据源事务的统一管理。
二、实现过程
1、自定义注解@MultiDataSourceTransactional
/** * @author 菜粥
* @Description 多数据源事务注解,此注解仅支持事务的commit和rollback,暂不支持其他高级特性,默认{"transactionManager", "mongoTransactionManager"}两种事务管理器,其他的请自行添加
* @date 2022/1/27 2:12 下午
**/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
全部评论 (0)
还没有任何评论哟~
