是什么
Feign是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需 创建一个接口并在接口上添加注解即可
Feign和OpenFeign两者区别
OpenFeign在Feign的基础上支持了对SpringMVC的注解,如@RequestMapping。OpenFeign的@FeignClient可以解析@ReuqestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
使用
- 在主启动类添加注解
@EnableFeignClients
- 新建接口并新增注解@FeignClient
@Component
@FeignClient("SYSTEM-SERVICE")
public interface PaymentFeignService {
@PostMapping("/education/bes/v1/system/dictionary/searchDictionary")
List<PaperInfoVO> queryPaperInfoList(CombInfoQueryVO combInfoQueryVO);
}
超时控制
OpenFeign默认支持Ribbon,YML文件里开启OpenFeign客户端超时控制
# 设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon:
# 指的是建立连接所用的时间,适用于网络状态正常的情况下,两端连接所用的时间
ReadTimeout: 5000
# 指的是建立连接后从服务器读取到可用资源所用的时间
ConnectTimeout: 5000
日志打印
- 配置日志bean
@Configuration
public class FeignConfig {
/**
* feignClient配置日志级别
*
* @return
*/
@Bean
public Logger.Level feignLoggerLevel() {
// 请求和响应的头信息,请求和响应的正文及元数据
return Logger.Level.FULL;
}
}
- YML文件里开启日志的Feign客户端
logging:
level:
# feign日志以什么级别监控哪个接口
com.boss.springcloud.service.PaymentFeignService: debug