leezongjie
leezongjie
saga失败触发全局回滚事件时,GlobalRollbackRequest,server接收到后判断了如果是saga就将回滚发送给发起者做状态机向前重试或者回退。saga注解这里需要额外注意,目前没有向前重试,发起者又没有对分支做存储,所以可能需要判断下如果是注解,就需要按照tcc部分,给每个分支rm发送分支回滚BranchRollbackRequest。  
 主要改动: 原parserInterfaceToProxy切面解析部分保持返回一个ProxyInvocationHandler,内部解析过程将会创建ProxyInvocationHandler拦截器链。 支持添加多个拦截器,可以通过{@link ProxyInvocationHandler#order()}指定切面的进入顺序。 不允许加载多个同类型的拦截器,如tcc和saga的二阶段注解不能同时存在,通过{@link ProxyInvocationHandler#type()}指定类型。
新增seata-saga-annotation模块,继承自seata-tcc,seata-saga-annotation主要是覆盖了tcc的部分逻辑,以适配saga模式。 新建saga注解:  扩展SagaActionInterceptorParser,支持Saga-annotation切面解析器。  扩展SagaActionInterceptorHandler,saga两阶段注解切面,继承自TccActionInterceptorHandler,覆盖重写了类型,参数生成,注解类部分方法。  seata-server扩展SagaAnnotationCore,执行SAGA-ANNOTATION的提交时忽略。  扩展SagaAnnotationResourceManager,继承自TCCResourceManager,二阶段回滚复用tcc逻辑,主要是覆盖了branchCommit,执行空提交方法,实际上TC会忽略SAGA-ANNOTATION的提交过程,不会走到RM端。 