问题描述
- 使用 feign 调用远程方法并开启熔断,熔断开启后 txlcn 的回滚失效,发起方 A 通过 feign 调用参与方 B(删除操作)、C(添加操作),其中 B 发生异常能正常回滚,C 无异常直接正常执行不参与回滚
- 在未启用熔断时,事务能正常回滚。做了熔断处理之后,A 接口不能正常回滚。
解决方案
DTXUserControls.rollbackGroup(TracingContext.tracing().groupId());
import com.codingapi.txlcn.tc.support.DTXUserControls;
import com.codingapi.txlcn.tracing.TracingContext;
import com.ming.biz.test.feign.IRemoteTradeLogService;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class RemoteTradeLogServiceFallback implements FallbackFactory<IRemoteTradeLogService> {
@Override
public IRemoteTradeLogService create(Throwable throwable) {
// 处理远程调用失败后的本地事务回滚问题
DTXUserControls.rollbackGroup(TracingContext.tracing().groupId());
return tradeLog -> log.error("调用失败", throwable);
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于