什么是Feign?
Feign被集成到SpringCloud Netflix模块,当Eureka,Ribbon集成的时候呢,Feign就具备了负载均衡的功能。Feign本身使用就很简便,再加上与SpringCloud的整合,将很大程度上降低了我们开发的工作量。
它是Github上面的一个开源项目,目的是为了简化WebService客户端的开发,在使用Feign的时候 可以使用注解来修饰接口,被修饰的接口就具有了访问webservice的能力,这些注解呢 可以使用Feign的自带注解,也可以支持使用第三方的注解。Feign还支持插件式的编码器和解码器,使用者可以通过这些特性,对请求和响应进行封装和解析。
总之Feign是一个客户端,Feign可以使用注解来修饰接口,被修饰的接口就有访问WebService的能力。
例如:@FeignClient。
Spring Cloud Feign 之 Fallback
环境信息: java 1.8、Spring boot 1.5.10.RELEASE、spring cloud-Edgware.SR3、maven 3.3+
在网络请求时,可能会出现异常请求,如果还想在异常情况下使系统可用,那么就需要容错处理,比如:网络请求超时时给用户提示"Server error"请稍后重试。
Spring Cloud Feign 就是通过Fallback实现的,有两种方式:
1、在Feign接口层上方标注@FeignClient(value = "zookeeper-server",fallback = FeignFallback.class),并且指定一个实现Feign接口的实现类。
2、在Feign接口上方标注@FeignClient.fallbackFactory = UserFeignFactory.class指定一个实现FallbackFactory<T>工厂接口类。(配合1使用,可以获取HTTP请求错误状态码和信息)