一、该问题的重现步骤是什么?
1. 存在以下几个服务: 顶层 服务A ; 二级服务B, 服务C
2. 服务A 对外(H5)暴露接口, 聚合调用 其他二级服务
3. 假如现在有个链路: H5 -> gateway -> A -> B . 服务B 出现预期的业务异常
4. 在站在A服务角度: 没有任务异常, 因为 异常被BladeFeignFallback 处理掉了. H5就无法看到 B服务抛出的业务异常
二、你期待的结果是什么?实际看到的又是什么?
期望有一种扩展机制, 服务B 出现业务异常时, 能够透传至上游, 上游服务继续走 @RestControllerAdvice 把异常捕获返回出去
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladeX 2.9.1.RELEASE linux
四、请提供详细的错误堆栈信息,这很重要。
B服务报错
2022-05-02 22:43:27.630 ERROR 19222 --- [ XNIO-1 task-1] o.s.c.l.e.BladeRestExceptionTranslator : 业务异常
org.springblade.core.log.exception.ServiceException: 请选择商品/分类!
A服务看到的结果. 但最终返回了 200
2022-05-02 22:43:27.697 ERROR 19044 --- [ XNIO-1 task-1] o.s.core.cloud.feign.BladeFeignFallback : BladeFeignFallback:[org.springblade.xxx.client.internal.InnerXxxClient.submit] serviceId:[xxx-service] message:[[400 Bad Request] during [POST] to [http://xxx-service/internal/xxx/submit] [InnerXxxClient#submit(InnerXxxReqDTO)]: [{"code":400,"success":false,"data":null,"msg":"请选择商品/分类!"}]]
扫一扫访问 Blade技术社区 移动端