[求助]Spring 微服务该如何优雅的进行补偿/重试
[求助]Spring 微服务该如何优雅的进行补偿 /重试
目前项目架构 spring-cloud-alibaba
网上查了下,又找了些 demo 看,基本上方案如下图了
![[求助]Spring 微服务该如何优雅的进行补偿/重试](http://4563.org/wp-content/uploads/2020/06/20200628_5ef8c57c8adfe.jpg)
字渣,见谅
现有两个方案
- 在 A 服务的 RemoteService 中进行处理 线路 1
- 优点:不同的调用方可以进行不同的补偿
- 缺点:
- 补偿 /重试 只能通过调用 B 服务的接口进行 不够灵活
- 每个调用方都要写一次 RemoteService 麻烦
- 在 B 服务 Controller 层切面中进行处理 线路 2
- 优点:代码属于接口提供方,补偿方式更灵活
- 缺点:永远返回 200,不知道执行成功还是失败了(可通过自定义 code 解决)
- 在 B 服务 API 包中处理
- 优点:不会影响浏览器直接对 B 服务的调用 线路 3
- 缺点:API 包中会引入太多无关的依赖(可通过指定 scope=compile 缓解)
提问环节
- 大家有啥更好的方式解决吗?
- 没有没有现成的框架?
- 补偿用定时任务还是 mq ?
想听听大家的意见