1. feign和hystrix
feign整合出错回退的功能,FeignClient的注解中,加入fallbackFactory = UserServiceFallback.class的设置,其中UserServiceFallBack需要实现FallbackFactory<UserServFeign>的接口。
在UserServiceFallBack中会接受一个Throwable的对象,在服务出错时可以利用他,分辨出错误类型,并且给予调用者错误信息。所以fiegn整合回退功能,是可以处理程序异常的
2. zuul整合服务回退功能
在给zuul整合回退功能时,只要类实现ZuulFallbackProvider接口,并且注册bean即可。
不过需要注意的时,这个回退只有服务掉线或者超时的情况下才会触发(Camden.SR4版本测试是这样),如果服务程序出现异常,此回退程序是不能处理的,异常会直接返回给调用者,比如页面。
zuul中异常的处理,主要是利用error过滤器,这个之后再详细学习。
3. 异常的处理流程
从最低的程序报出异常,到最后处理掉,有很多地方可以处理,在此列举下目前知道的。
1. 程序的try-catch
2. spring的统一异常处理
3. springboot的/error重写
4. feign的回退处理(超时或者出错都可以处理)
5. 如果不适用feign,hystrix的回退处理
6. springCloud中zuul过滤器异常,error过滤器
7. springCloud中zuul为单个服务提供的回退处理