Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决代码可读性差,编程体验不统一、参数复杂URL难以维护的问题。
- <dependency>
- <groupId>org.springframework.cloudgroupId>
- <artifactId>spring-cloud-starter-openfeignartifactId>
- dependency>
主要是基于SpringMVC的注解来声明远程调用的信息,比如:
Feign运行自定义配置来覆盖默认配置,可以修改的配置如下:
类型 | 作用 | 说明 |
feign.Logger.Level | 修改日志级别 | 包含四种不同的级别:NONE、BASIC、HEADERS、FULL |
feign.codec.Decoder | 响应结果的解析器 | http远程调用的结果做解析,例如解析json字符串为java对象 |
feign.codec.Encoder | 请求参数编码 | 将请求参数编码,便于通过http请求发送 |
feign. Contract | 支持的注解格式 | 默认是SpringMVC的注解 |
feign. Retryer | 失败重试机制 | 请求失败的重试机制,默认是没有,不过会使用Ribbon的重试 |
一般我们需要配置的就是日志级别。
- public class DefaultFeignConfiguration {
- @Bean
- public Logger.Level logLevel(){
- return Logger.Level.BASIC;
- }
- }
- <dependency>
- <groupId>io.github.openfeigngroupId>
- <artifactId>feign-httpclientartifactId>
- dependency>
在消费者的yaml配置文件中添加连接池配置
- feign:
- client:
- config:
- default: # default全局的配置
- loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
- httpclient:
- enabled: true # 开启feign对HttpClient的支持
- max-connections: 200 # 最大的连接数
- max-connections-per-route: 50 # 每个路径的最大连接数