1.OpenFeign介绍
- Feign是Spring Cloud组件中的一个轻量级HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡。Feign使用注解定义接口,实现服务间通信,Feign本身不支持Spring MVC的注解,它有一套自己的注解。
OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解的接口,通过动态代理的方式实现服务间通信,并内置Ribbon实现客户端负载均衡的能力。
2.开发步骤
导入依赖
- 在启动类上添加注解
@SpringBootApplication@EnableFeignClients // 启用feign客户端@EnableDiscoveryClient
- 开发接口,通过@FeignClient 注解定义调用的服务
- value属性定义服务的ID
- 请求的方式、URL、方法参数要与请求的接口一致
@FeignClient(value = “user-service”)
public interface UserServiceFeignClient {
@GetMapping(“/user/{id}”)
public CommonResult getUser(@PathVariable(“id”) int id);}
5.OpenFeign开启通信日志
(1)OpenFeign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解OpenFeign中Http请求的细节。
(2)日志级别
- NONE:默认的,不显示任何日志;
- BASIC:仅记录请求方法、URL、响应状态码及执行时间;
- HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息;
- FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。
(3)配置日志级别
@Bean public Logger.Level loggerLevel(){ return Logger.Level.FULL; }
(4)在application.yml中配置需要开启日志的Feign客户端
logging: level: 客户端接口: debug
6.OpenFeign 配置
请求重试user-service: #服务ID 针对某个具体服务的配置 ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule OkToRetryOnAllOperations: false # true 对所有请求 get ,post,put ,delete等都进行重试,false 只针对get请求重试。 MaxAutoRetriesNextServer: 1 # 切换实例次数 MaxAutoRetries: 1 #切换实例后重试次数
- 导入Spring Retry依赖
- 开启重试日志: org.springframework.retry.support: debug
- 配置重试的策略
超时配置
- 请求超时(连接超时)
- 请求处理超时(业务处理超时)