解决Feign获取异常信息的处理方案

网友投稿 1908 2022-12-14

解决Feign获取异常信息的处理方案

解决Feign获取异常信息的处理方案

目录Feign获取异常信息解决方案一、客户端接口指定熔断器处理工厂类二、ArticleFhttp://allBackFactory三、ArticleClientImplFeign中 fallback获取400等异常信息及message1.调用第三方的方法2.fallback函数返回值的组合3.返回值

Feign获取异常信息

最近在使用Feign调用时,出现了异常,原本使用的是fallback,直接返回了自定义的结果

@Override

public Result findUserNameById(String id) {

return new Result(false, StatusCode.ERROR,"啊哦,用户客户端出现了异常");

}

但是无法获取具体的异常信息

解决方案

将fallback换成fallbackFactory

一、客户端接口指定熔断器处理工厂类

/**

* @author

* @date 2019/9/2215:37

*/

@FeignClient(value = "weblog-article",fallbackFactory = ArticleFallBackFactory.class,configuration = FeignInterceptor.class)

public interface ArticleClient {

/**

* 根据文章id封装搜索文章实体

* @param aid

* @return

*/

@GetMapping("article/client/packageArticle/{aid}")

Result packageArticle(@PathVariable("aid") String aid);

}

二、ArticleFallBackFactory

/**

* @author yhttp://unshi

* @date 2019/10/2010:37

*/

@Component

public class ArticleFallBackFactory implements FallbackFactory {

@Override

public ArticleClient create(Throwable throwable) {

System.out.println("搜索微服务调用文章客户端出错:"+throwable.getMessage()==null?"":throwable.getMessage());

throwable.printStackTrace();

return new ArticleClientImpl() {

@Override

public Result packageArticle(String aid) {

return new Result(false, StatusCode.ERROR,"搜索微服务调用文章客户端出错 method:packageArticle");

}

};

}

}

有时候throwable的getMessage没有捕获到个别异常信息http://,干脆就直接打印了堆栈信息

三、ArticleClientImpl

/**

* @author yunshi

* @date 2019/9/2215:41

*/

public interface ArticleClientImpl extends ArticleClient {

}

实操可用~

Feign中 fallback获取400等异常信息及message

Spring cloud中当调用第三接口的时候,为防止超时一直等待,我们一般用断路由的方式来进行超时返回,我一般用SpricnyLAPbHlfng Cloud Hystrix。在调用第三方的地方进行fallback进行声明,然后重新fallback函数,配置超时时间,在超时时间内容没有返回或者参数错误就进人到fallback里面进行处理。具体的做法,网上一大堆,可自行百度。

然后第三方接口,在参数错误的时候,也是按400返回,尤其是json里面的数据key对应的value的合法性。而我们出错的时候想把第三参数的错误信息返回,这样就能很明确知道哪错了,而不是认为是超时,下面进入正题:

1.调用第三方的方法

fallbackFactory中调用自己重写的fallback,熔断时会自动调用。

2.fallback函数返回值的组合

自己重写的熔断函数中,重新create函数,其中throwable 会记录捕获的所有异常,我们通过getMessage可得到我们的信息,具体可以参考FallbackFactory接口的实现。

3.返回值

把fallback函数的返回值反倒返回值的msg中返回,这样调用接口的时候就可以得到第三方返回的错误信息,进行调整了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring data 连接mongodb的两种方式
下一篇:Springboot启动不检查JPA的数据源配置方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~