SpringCloud中Feign为什么总是打印不出报错信息?


theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

写在前面

Feign是微服务中服务间调用的优选组件,后来的OpenFeign也是基于此来开展的。

我会创建一个新的专栏,来保存我最近使用Feign的一些心得和问题点,欢迎大家关注。

为什么要打印出Feign的报错信息

总是会碰到Feign调不通的时候,这种问题的出现简直是五花八门。

有可能是路径错误!

有可能是服务连接不上!

有可能是Nacos命名空间和他人一致,发送到他人服务上去了!

总之千奇百怪,而目前项目框架中,还总是只使用fallback来实现Feign接口,这就导致了我明明知道出问题了,但是出的什么问题却不知道。

所以,不得不将Feign的报错信息全部打印出来。

解决方案

Feign提供了FallBackFactory工厂类,只需要实现这个工厂类,就能捕获到feign接口的全部异常。

首先在Feign接口中进行调整,调整完后如下:

java @FeignClient(value = 'other', fallbackFactory = FileFallbackFactory.class) public interface FileFeign { }

在@FeignClient注解中声明fallbackFactory即可。

接下来实现FileFallbackFactory类。

``` @Slf4j @Component public class FileFallbackFactory implements FallbackFactory {

@Override
public FileFallback create(Throwable throwable) {
    log.error(throwable.getMessage());
    throwable.printStackTrace();
    return new FileFallback();
}

}

@Slf4j class FileFallback implements FileFeign {

} ```

通过实现FallBackFactory工厂类中create方法,即可捕获所有经过Feign接口的异常,而且也可以兼容fallback类。

只需要再从当前文件中声明一个子类即可。

期间我遇到了哪些问题?

关于Feign是使用Fallback比较好,还是使用FallbackFactory比较好,这是困扰我的一个问题。

这其中就是是否捕获异常的区别。

想了很久,我大概是这样做的。

正式上线的情况,可以采用Fallback,毕竟只是处理异常,不是抛出异常。

测试环境,还是尽量是FallbackFactory,报错全一些,代码编写时也能轻松一些。

总结

在编写代码的过程中,没办法获取到所有的错误简直就是灾难,不能和代码有信息差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ijiran

一杯咖啡太贵,一块糖就可以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值