OpenFeign如何使用
本文主要介绍"OpenFeign怎么使用",希望能够解决您遇到有关问题,下面我们一起来看这篇 "OpenFeign怎么使用" 文章。
OpenFeign基本使用
OpenFeign简介
OpenFeign是一个声明式的http客户端,让编写web服务客户端变的非常容易,只需要创建一个接口并在接口上添加注解即可,OpenFeign的前身是Feign,后者目前已经停更了,OpenFeign是SpringCloud在Feign的基础上支持了Spring MVC的注解,并通过动态代理的方式产生实现类来做负载均衡并进行调用其他服务。
Ribbon+RestTemplate过于繁琐,通过OpenFeign可以简化开发
基本使用
以用户服务调用商品为例
用户服务配置 OpenFeign
- 导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
- 启动类上加注解
在商品服务中写被调用接口(无参接口测试)
在用户服务中 直接使用Feign写服务调用
- 创建一个普通的Java接口
- 通过注解声明当前接口为 Feign的客户端
- 在Feign接口中 写服务调用的方法
- 在用户服务的Controller中使用Feign接口
- 启动所有服务 两个商品服务 一个用户服务 注册中心 访问用户服务观察服务调用
访问用户服务的Controller 可以看到负载均衡的效果
- 流程
关于传递参数的处理
参数传递都是json 实际上是RestFul的请求
- /{} 拼接参数
- 被调用接口示例【商品服务】
- Feign接口示例【用户服务】
- ?拼接参数 对应常见请求类型Get请求
- 被调用接口示例【商品服务】
- Feign接口示例【用户服务】
- 请求体传递参数 对应常见请求Post请求
- 被调用接口示例【商品服务】
- Feign接口示例【用户服务】
开启日志
Feign 和 RestTemplate 不一样 ,对请求细节封装的更加彻底,不管是请求还是请求的参数,还是响应的状态都看不到,想要看到请求的细节需要通过Feign的日志
Feign日志的配置
1.配置类 @Bean
[@Bean](https://my.oschina.net/bean) public Logger.Level feignConfig(){ return Logger.Level.FULL; }
2.在配置文件中开启Feign接口所在包的日志
通过以上配置 重启项目 再次使用Feign服务调用 就会看到如下日志:
Feign参数调优
1. 替换OKHttp
在默认情况下 spring cloud feign在进行各个子服务之间的调用时,http组件使用的是jdk的HttpURLConnection,没有使用线程池。
有2种可选的线程池:HttpClient和OKHttp,比较推荐OKHttp,请求封装的非常简单易用,性能也很ok。
添加依赖
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </dependency>
修改配置文件
feign: okhttp: enabled: true httpclient: enabled: false max-connections: 1000 max-connections-per-route: 100
max-connections:最大连接数
max-connections-per-route:每个url的连接数
2. 开启Feign请求响应压缩
开启压缩可以有效节约网络资源,但是会增加CPU压力,建议把最小压缩的文档大小适度调大一点
## 开启Feign请求响应压缩 feign.compression.request.enabled=true feign.compression.response.enabled=true ## 配置压缩文档类型及最小压缩的文档大小 feign.compression.request.mime-types=text/xml,application/xml,application/json feign.compression.request.min-request-size=2048
关于 "OpenFeign怎么使用" 就介绍到这。希望大家多多支持编程宝库。
以太坊Downloader模块下StateSync.go源码分析是怎样的:本文主要介绍"以太坊Downloader模块下StateSync.go源码分析是如何的",希望能够解决您遇到有关问题,下面我们一起来看这篇 "以太坊Downloade ...