探讨通过Feign配合Hystrix进行调用时异常的处理
原文:http://www.jianshu.com/p/f240ca7bb7c0
前言:此文所述处理方式为本人在实践过程中研究分析得出的一种解决方案。
本文不仅希望能为 SC 学习者提供一种如题问题的一种解决方案,并且希望通过本文引出各位 SC 的朋友对如题问题的共同探讨和最佳实践方案的分享。
单个项目是通过 Jersey 来实现 restful 风格的架构
发生异常时异常信息总是提示没有回调方法,不能显示基础服务抛出的异常信息
暂时没有考虑发生异常之后进行回调返回特定内容
业务系统通过 feign 调用基础服务,基础服务是会根据请求抛出各种请求异常的(采用标准http状态码),现在我的想法是如果调用基础服务时发生请求异常,业务系统返回的能够返回基础服务抛出的状态码
当然基础服务抛出的请求异常不能触发 hystrix 的熔断机制
解决思路
通过网上一些资料的查询,看到很多文章会说
HystrixBadRequestException不会触发 hystrix 的熔断 --> 但是并没有介绍该异常的实践方案感觉要解决项目的痛点,切入点应该就在
HystrixBadRequestException了。于是先看源码,一方面对 Hystrix 加深理解,尝试理解作者设计的初衷与想法,另一方面看看是否能找到其他方案达到较高的实践标准
主要类对象简介
interface UserRemoteCall定义feign的接口其上会有@FeignClient,FeignClient 定义了自己的 Configuration -->FeignConfigurationclass FeignConfiguration这里是定义了指定 Feign 接口使用的自定义配置,如果不想该配置成为全局配置,不要让该类被自动扫描到class UserErrorDecoder implements ErrorDecoder该类会处理响应状态码 (