Open Feign是什么?
Feign是一个声明性web服务客户端。它使得编写web客户端变得更加容易。使用Feign创建一个接口并对其进行注释。
openfeign同时还集成SpringCloud LoadBalancer,可以在使用OpenFeign时提供http客户端的负载均衡,也可以继承阿里巴巴的Sentinel来提供熔断,降级等功能。而与SpringCloud LoadBalancer不同的是,通过OpenFeign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用。
Open Feign原理
openfeign是一个声明式的web服务客户端,只需要创建一个Rest接口并且在该接口添加注解@FeignClient即可。openFeign基本上就是当前微服务调用的事实标准。
前面使用SpringCloud LoadBalancer+RestTemplate时,利用RestTemplate对http请求的封装处理形成了一套模板化的调用方法。但是实际中,由于对服务依赖的调用不止一处,往往一个接口会被多处调用,所以通常会针对每个微服务自行封装一些客户端来包装这些依赖的调用。
所以openFeign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口定义。在openFeign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(在一个微服务接口上面标注一个@FeignClient注解即可),即可完成对服务提供方的接口绑定,统一对外暴漏可以被调用的接口方法,大大简化和降低了调用客户端的开发量,也即由服务提供者给出调用接口清单,消费者直接通过调用OpenFeign调用即可。
步骤
Open Feign的超时调用
Open feign的超时调用
默认超时时间为60秒,超过之后会报错;为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制,默认60秒太长或者业务时间太短都不好。
yml文件中开启配置
connectTimeout 连接超时时间
readTimeout 请求处理超时时间
Open Feign的重试机制
默认重试机制是关闭的
如果需要开启重试机制的话,新增配置类FeignConfig并且修改Retryer配置
Open Feign中http client
如果不做特殊配置,OpenFeign默认使用JDK自带的HttpURLConnection发送请求。由于默认HttpURLConnection没有连接池、性能和效率比较低,如果采用默认,性能不是最优的。所以要更换为Apache HttpClient 5替换OpenFeign默认的HttpURLConnection