Seata分布式事务冲突
来源:9-11 分布式事务01-流程剖析、概念术语、事务消息三状态

wa小艾
2022-03-15
前提:
- 服务均引用了全局异常处理 @RestControllerAdvice
- 服务均引用了Seata来管理分布式事务
- feign调用
- 调用流程: content-center(A) 调用 user-center(B)的加分接口
第一轮测试:
- 测试1:A抛异常B正常: B依旧正常运行未回滚
- 测试2:A正常B抛异常(全局异常捕获处理正常返回): A正常执行未回滚
引入官方的解决方案:
通过AOP动态创建/关闭Seata分布式事务.
第二轮测试:
- 测试1.AB都加入AOP或B单独加AOP: A一直报 xid count not found, …mybe finished
- 测试2-1.A单独加AOP: A抛异常B正常: 事务OK
- 测试2-1.A单独加AOP: A正常B抛异常(全局异常捕获处理正常返回): A正常执行未回滚
- 测试3:A单独加,且A中必须嵌入代码获取B的返回值,根据code!=200自己抛异常…无论谁抛异常,事务都OK了
问题与意愿:
- 全局异常捕获了,子服务不抛异常,seata就没法识别回滚了吗?老师有没有可以推荐的链接让我学习学习…目前只能使用第二轮的测试3这个笨办法.
- 全局异常需要统一在gateway实现嘛…感觉别个都没这样弄呢
- 老师能出个进阶教程吗.现在很多都在用seata,没用rocketmq吧.实在不知道去那儿学习啊.
写回答
1回答
-
大目
2022-03-15
不太清楚哦,会不会是seata使用层面的问题哈?
022022-03-21
相似问题