项目启动时,Hmily相关配置流程:
未命名文件(14).jpg
项目运行时,对注解了@Hmily的方法执行时所涉及的内部流程:
未命名文件(16).jpg
另外,当利用feign调用远程接口时,事务上下文信息(HmilyTransactionContext)是如何传递的呢?
Hmily配置了HmilyRestTemplateConfiguration类:
@Bean
@Scope("prototype")
public Builder feignBuilder() {
return Feign.builder().requestInterceptor(new HmilyRestTemplateInterceptor()).invocationHandlerFactory(this.invocationHandlerFactory());
}
它的作用是,每当使用feign调用远程接口时,都会在请求头中添加上事务上下文信息(HmilyTransactionContext)。
每执行一步,都会即时记录相应事务状态,比如执行confirm方法,这时候如果confim执行失败了,由于相应的事务状态没有更新,后端的定时器会不断查询失败的事务,持续调用该方法。
网友评论