目录
前言
使用
引入依赖
开启feign
编写feign客户端
效果
日志
超时配置
重试机制
拦截器
Fallback兜底返回
引入依赖
编写兜底实现
连接池
引入依赖
开启连接池
制作OpenFeign Starter
编写配置类
自动装配
前言
在RPC框架中,有openFeign和Dubbo,openFeign是SpringCloud的,而Dubbo是
SpringCloudalibaba的,我们讲解openFeign,博主所在公司用的RPC框架也是openFeign,
几个系统之间相互进行PRC调用,通过制作openFeign starter推送到远程仓库,然后通过maven引
用使用feign客户端进行调用。
SpiringCloud openFeign官网:openFeign
使用
引入依赖
引入spring-cloud-starter-openfeign和spring-cloud-starter-loadbalancer依赖,引入spring-cloud-
starter-loadbalancer主要是做负载均衡,他是一个负载均衡器,在旧版本用的是Ribbon,新版本用
的是这个loadbalancer,当有多个服务实例的时候,根据负载均衡算法自动选取一个,默认是轮
询。
开启feign
@EnableFeignClients:启用Feign客户端功能,扫描并注册@FeignClient接口,生成代理类。
编写feign客户端
@FeignClient:nacos对应的服务名称(会根据服务名称找到ip+端口 进行RPC调用)
效果
订单服务通过openFeign调用商品服务
日志
如果我们想看调用过程中的详细日志,我们可以配置openFeign日志,查看到详细信息。
配置文件中配置feign包下的日志级别为debug,定义一个Bean返回Logger.Level.FULL,表示设置Feign客户端日志级别为FULL,记录所有请求和响应的详细信息。(生产中一般不开启feign日志)
超时配置
如果请求都超时,在高并发的情况下,请求都阻塞在哪里就会对服务造成雪崩。我们可以对服务超
时进行一些配置,超时配置有连接超时和读取超时,连接超时默认10秒,读取超时默认60秒。
配置连接超时和读取超时,如没有配置默认使用default默认的配置。
重试机制
openFeign默认是不重试的,可以在配置文件中配置重试机制,如果openFeign在IOC容器里面找
到,会使用IOC里面的配置的。
拦截器
openFeign提供了拦截器,可以对请求和响应进行拦截处理,一般我们进行请求拦截器处理,实现
RequestInterceptor接口,在apply方法里面添加请求,可以在配置文件中配置,如果配置文件不配
置,放到IOC容器,他会在IOC容器里面拿到。
Fallback兜底返回
引入依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
编写兜底实现
连接池
openFeign默认是不支持连接池的,这样就会导致在高并发场景下,性能不是很好,频繁创建连接
和销毁连接,我们可以配置连接池来提供性能、优化资源利用。
openFeign底层发起http请求,依赖其他框架。其底层支持的http客户端实现包括:
- HttpURLConnection:默认实现,不支持连接池
- Apache HttpClient:支持连接池
- OKHttp:支持连接池
openFeign整合OKHttp的步骤如下:
引入依赖
开启连接池
制作OpenFeign Starter
制作openFegin Starter推送到maven私服仓库,其他项目就可以引用调用feign客户端。
编写配置类
启用对Feign客户端支持。
自动装配
编写自动装配配置,springboot2.X和springboot3.X都进行配置,确保能够自动装配进去。