来点大佬,问下seata和feign的问题

发布于 2022-03-05 08:18:16 字数 462 浏览 746 评论 2

公司打算做的先项目打算将seata整合进来,公司也没人搞过,也不认识啥大佬,文档已经快翻烂了,磕磕碰碰的终于搭建的差不多了,但现在还有几个问题实在没想明白,只能求助下大佬们了。

现在碰到的一个问题就是feign调用其他服务的时候,到底该返回一个什么才会触发回滚呢?

我单机做了多数据源进行切库操作的时候,手动抛出一个异常就可以将之前每个库添加进去的数据回滚了,但feign本质上就是对一个httpclient的封装,返回的还是一个http请求,按照之前的经验,A服务调用B服务,B服务执行,无论成功还是失败,都返回一个json,里面有一个状态表示这次请求的结果,那我这要怎么才能告诉A服务你该回滚还是正常执行呢?

还有在feign的调用,按照之前的经验,这里是要做统一异常处理的,那现在该怎么弄呢?

写的时候还想到一个问题,feign有重试机制,如果出现网络波动,第一次发送失败,第二次成功,但实际第一次成功了的,这会不会造成seata出问题呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉生梦死 2022-03-10 02:48:13

嗯,这个问题已经解决了,其实和feign没太大关系,直接抛出异常,B服务会检测到异常进行回滚,A服务如果安全起见,服务调用失败也手动抛异常,就会层层回滚

惜醉颜 2022-03-08 09:03:32

SeataXid 这个是贯穿整个  Seata全局事务的唯一标识,各分支事务是基于它之上进行建立联系的,所以你每个微服务都需要在feign调用的时候 拿到SeataXid 并进行绑定当次事务,其次你说的事务回滚,这个是根据你自己的需要进行灵活处理的,例如JSON 结构中有个 是否回滚状态,如果标记为需要回滚,那么在你说的A调用B这个过程的 A微服务里面就需要进行全局事务回滚。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文