Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。
fegin 的特性
- 可插拔的注解支持,包括Feign注解和JAX-RS注解;
- 支持可插拔的HTTP编码器和解码器;
- 支持Hystrix和它的Fallback;
- 支持Ribbon的负载均衡;
- 支持HTTP请求和响应的压缩。
feign 的使用
1.引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在application 主方法上加上 @EnableFeignClients
3.配置 FeignClient
新建一个接口,加上注解 @FeignClient,然后写接口一样把相对应的接口写上,接口要和服务提供方一致。
feign 的包依赖关系深入了解
通过上图feign 依赖引入发现,他其实引入了 ribbon 的依赖和 hystrix 的核心依赖,所以引入 feign 依赖之后可以把 ribbon 的依赖去掉,但是 hystrix 只引入了核心依赖,如果要用hystrix 的配置文件或者注解,不能去除 hystrix 依赖。
feign 的 ribbon 和 hystrix 的综合使用
ribbon 的使用
ribbon 配置
1.连接超时时长 ribbon.ConnectionTimeOut : 3000
2.读取超时时长: ribbon.ReadTimeOut:6000
hystrix 熔断器的使用
1.hystrix 开启熔断服务
yml 文件中加入配置文件
feign:
hystrix:
enabled: true
2.增加一个故障回传的类,并实现接口中的方法
3.在服务调用接口中配置类
feign 请求压缩
配置文件
feign:
hystrix:
enabled: true
compression:
request:
enabled: true #开启请求压缩
mime-types: text/html,application/xml,application/json #设置压缩的数据类型
min-request-size: 2048 #设置触发的压缩的大小下限
response:
enabled: true #开启响应压缩
feign 日志打印
@Configuration
public class FeignLoggerConfig
{
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.BASIC;
}
}