介绍
官网说明:
Feign 是一个声明式 Web 服务客户端。它使编写 Web 服务客户端变得更加容易。要使用 Feign,请创建一个接口并对其进行注释。它具有可插拔的注释支持,包括 Feign 注释和 JAX-RS 注释。Feign 还支持可插拔编码器和解码器。Spring Cloud 增加了对 Spring MVC 注解的支持,以及使用 Spring Web 中默认使用的注 HttpMessageConverters 解。Spring Cloud 集成了 Eureka、Spring Cloud CircuitBreaker 以及 Spring Cloud LoadBalancer,以便在使用 Feign 时提供负载均衡的 http 客户端。
使用
创建一个springboot项目,主启动类加注解**@EnableFeignClients**,开启OpenFeign功能并激活
在提供接口的项目模块中引入openfeign依赖,新建接口,并在接口类中配置@FeignClient注解,@FeignClient(“xxxx”)的xxx是consul或者是其他服务注册中间件中的服务名。
高级特性
超时控制
我们可以在默认客户端和命名客户端上配置超时。OpenFeign 使用两个超时参数:
- connectTimeout 防止由于服务器处理时间过长而阻止调用方。
- readTimeout 从建立连接时开始应用,并在返回响应时间过长时触发。
OpenFeign不配置超时时间的话默认等待60秒,超时后会报错
如何自定义配置超时时间如下:
feignName 在此示例中, 是@FeignClient value 它也与 @FeignClient name 和 @FeignClient contextId 别名。在负载均衡方案中,它还对 serviceId 应于将用于检索实例的服务器应用。decoders、retryer 和其他类的指定类必须在 Spring 上下文中具有 bean 或具有默认构造函数。
配置可分全局配置和指定配置,如果一个接口中存在调用多个微服务的接口,每个微服务的请求时间不同,根据业务不同需要特色化配置,就需要用到指定超时时间配置。
全局配置:
spring:
cloud:
openfeign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
loggerLevel: basic
指定配置