【发布时间】:2020-05-13 12:26:40
【问题描述】:
我创建了服务'A',需要由服务'B'使用feign客户端调用 如果服务“A”由于某些验证而失败,则服务“A”发回包含以下详细信息的错误响应, (1)http状态码 (2)错误信息 (3) 自定义错误映射,其中包含自定义错误代码及其错误消息 例如,
在 Service 'B' 中,我们使用 feigndecoder 来处理 feign 异常,但它只提供 http 状态码而不是自定义错误码
而且,就我而言,对于不同的场景,http 状态代码是相同的,但自定义错误映射值是不同的。 结合两者(http状态码+自定义错误图),我们必须处理服务'B'中的异常。
请对此提出一些建议
【问题讨论】:
-
能否在您的问题中添加源代码或更多信息?
-
我们使用 FeignErrorDecoder 实现了 feign 的 ErrorDecode 并且我们覆盖了 decode 方法(public Exception decode(String methodKey, Response response)) 从响应中我们只能得到 http 状态而不是自定义错误映射, 上面提到了
-
我们得到了解决方案和下面的解决方案,(1)您不需要错误解码器来处理假装异常。 (2)您只需要一个接受 FeignException 的异常处理程序 (3)从该 FeignException 中,我们可以调用 contentUtf8 方法来获取服务“A”发送的整个自定义异常响应。
-
添加了在 github 上创建的示例 POC 我们有两个服务一个是员工服务,另一个是 feign 服务从 feignService 我们调用员工服务,如果员工服务由于某些错误/异常而失败并且相同错误响应可以通过 feignService 自定义。 PFB 存储库详细信息github.com/agarwalsudhanshu46/employeegithub.com/agarwalsudhanshu46/FeignService
标签: java spring spring-boot spring-cloud-feign feign