当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Netflix:使用Feign处理远程服务错误

居和顺
2023-03-14

我们正在尝试将Spring Cloud Netflix投入生产环境。目前,我们遇到了一个关于业务逻辑错误处理的问题。

我们使用Feign作为HTTP REST客户端。微服务A需要调用部署在不同JVM(或物理服务器)中的微服务B。微服务B可能会返回一些属于业务的错误消息。例如,A需要从B查询订单信息,但订单ID可能不存在,因此B必须返回错误消息,告诉A此订单不存在。A必须从返回消息中执行if-else判断,以确定是否存在erorrs,然后代码如下所示:

//remoteServiceA is an interface annotated with @FeignClient
resultA = remoteServiceA.foo();
if (resultA.hasError) {

} else {

}

resultB = remoteServiceB.foo();
if (resultB.hasError) {

} else {

}

// ... ...

if-else太多了,所以不够优美。我们想要的是remoteserviea.foo()可以抛出自定义的运行时异常,例如OrderNotExistException。有什么想法来实现这个目标吗?

共有1个答案

丌官嘉良
2023-03-14

我已经解决了这个问题。我定制了Feign的errordecoder组件,在该组件中,我可以根据HTTP原始响应抛出自己的异常。

 类似资料:
  • 本文向大家介绍spring cloud 之 Feign 使用HTTP请求远程服务的实现方法,包括了spring cloud 之 Feign 使用HTTP请求远程服务的实现方法的使用技巧和注意事项,需要的朋友参考一下 一、Feign 简介 在spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK

  • 我有很多不正常的逮捕,但我不明白这怎么可能,因为不明白问题的根源。这是异常逮捕的日志: android.app.远程服务例外: android.app.ActivityThread$H. handleMessage(ActivityThread.java:1881)android.os.Handler.dispatchMessage(Handler.java:105) android.os.Loo

  • 本文向大家介绍SpringCloud使用Feign实现服务调用,包括了SpringCloud使用Feign实现服务调用的使用技巧和注意事项,需要的朋友参考一下 Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能以外,它还提供了一种声明式的

  • 我使用Spring批处理管理来管理和监视作业和执行。如何调用一个作业并从一个独立的java应用程序启动它,该应用程序具有到包含Spring Batch Admin WebApp的服务器的给定HTTP连接。 谢谢你的帮助

  • 章节简述:  本章讲解了如何使用nmtui命令配置网卡参数,以及通过nmcli命令查看网络信息并管理网络会话服务,从而让读者能够在不同工作场景中快速地切换网络运行参数;还讲解了如何手工绑定round-robin轮询模式双网卡,实现网络的负载均衡。 本章深入介绍了SSH协议与sshd服务程序的理论知识、Linux系统的远程管理方法以及在系统中配置服务程序的方法,并采用实验的形式演示了使用基于密码与密

  • 本文向大家介绍SpringBoot如何使用feign实现远程接口调用和错误熔断,包括了SpringBoot如何使用feign实现远程接口调用和错误熔断的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringBoot如何使用feign实现远程接口调用和错误熔断,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.第一步,新建两个简单的