微服务调用, 异常被BladeFeignFallback吃掉, 导致上游服务无法感知该异常

Blade 未结 1 748
疯狂的tiger
疯狂的tiger 剑童 2022-05-02 23:26

一、该问题的重现步骤是什么?

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":"请选择商品/分类!"}]]




1条回答
  • 2022-05-03 10:24

    商业版答疑规则见:https://sns.bladex.cn/article-14990.html

    请将账号邮箱修改为下单购买授权的qq邮箱便可咨询商业版疑问

    修改完邮箱后请将此贴删除并重新发一贴


    0 讨论(0)
提交回复