【SpringCloud学习】Feign捕获异常(Greenwich版)

介绍

feign不使用熔断器的时候捕获异常

实现ErrorDecoder获取抛出的异常

import com.fasterxml.jackson.databind.ObjectMapper;
import feign.Response;
import feign.Util;
import feign.codec.ErrorDecoder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;

@Slf4j
@Configuration
public class ExceptionErrorDecoder implements ErrorDecoder {

    ObjectMapper objectMapper = new ObjectMapper();

    public Exception decode(String methodKey, Response response) {
        ObjectMapper om = new ObjectMapper();
        ExceptionInfo resEntity = null;
        Exception exception = null;
        try {
            resEntity = om.readValue(Util.toString(response.body().asReader()), ExceptionInfo.class);
        } catch (IOException ex) {
            log.error(ex.getMessage(), ex);
        }
        return new Exception(resEntity.getMessage());
    }
}

创建异常转换类

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class ExceptionInfo implements Serializable {

    private Date timestamp;

    private Integer status;

    private String message;

    private String path;

    private String error;

}

关闭feign的熔断器

feign.hystrix.enabled=false

默认为false的 如果打开了要关闭

测试

随便找个客户端调用一下就知道了


文章作者: Ciwei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Ciwei !
 上一篇
【SpringMvc执行流程】SpringMvc rest接口处理流程(十二) 【SpringMvc执行流程】SpringMvc rest接口处理流程(十二)
spring mvc rest 处理流程根据前面学习的处理流程整理了下 项目搭建构建一个简单的spingboot项目,如下: @RestController public class HelloWorldController {
2019-07-21
下一篇 
【SpringCloud学习】Spring Cloud Gateway熔断器使用(Greenwich版) 【SpringCloud学习】Spring Cloud Gateway熔断器使用(Greenwich版)
本文需要的demo: 服务Provider:ClientA 服务Consumer:Feign 网关:Gateway maven需要添加: <dependency> <groupId>org.springframewo
2019-07-21
  目录