深入解析Try阶段
上一篇博客介绍了InitiatorMiloTransactionHandler是如何处理事务发起者发起的调用,try阶段完成后执行confirmPhase,否则执行cancelPhase,在解析这两个方法之前我们先再回到tryPhase方法里面看一下,milo框架当创建完事务日志(READY阶段)并且绑定到当前线程之后调用了pjp.proceed(),执行到这里就会进入到payment方法,payment方法最重要的两个地方就是通过openFeign远程调用了库存服务扣减库存和账户服务扣减余额。
扣减库存和扣减账户是分别通过两个FeignClient去执行的,而这两个FeignClient的扣减方法上都是带有@MiloTCC注解的,对于Milo框架来说分布式事务所有的参与者都必须带@MiloTCC注解。所以当执行扣减库存和扣减账户时的远程调用也将被Milo框架拦截,只有创建订单、扣减库存和扣减账户都顺序完成,Try阶段才算完成。