1通过AOP获取事务控制权,并将AOP Order(1000)设置在最外层
@Aspect
@Order(1000)
@Component
public class DistributionAop {
@Around("execution(* javax.sql.DataSource.getConnection(..))")
public Connection getConnection(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("获取事务管理控制权");
Connection connection = (Connection) joinPoint.proceed();
return connection;
}
}
2自定义分布式处理的connection
3实现分布式事务管理器(事务协调员)
4重写事务提交事件(事务参与者,通过RPC与事务管理器交互)
5通过协调员控制事务
6参与者在commit之前,await等待协调员的提交/回滚指令