一、Feign和OpenFeign的区别
- 支持spring mvc 注解
- 整合了更多的扩展(请求重试策略、超时控制、请求拦截器)
二、高级配置
2.1 日志配置
日志等级有4种:
- NONE(性能最佳,适用于生产):不记录任何日志
- BASIC(适用于生产环境追踪):仅记录请求方法、URL、响应状态代码以及执行时间。
- HEADERS:记录BASIC级别的基础上,记录请求和响应的header
- FULL(适用于开发与测试环境定位问题):记录请求和响应的header、body和元数据。
2.2超时配置
若服务提供者的请求处理时间超过了请求处理的超时时间,则会报Read timed out错误
2.3 自定义拦截器
OpenFeign 中的拦截器是对服务调用者(也叫消费者)调用服务提供者的过程进行拦截。
Spring MVC 中的拦截器是对客户端(浏览器)请求服务端的过程进行拦截。
2.3.1 自定义OpenFeign拦截器类
在服务消费者项目中创建一个名称为TraceIdFeignInterceptor 的拦截器类,并让其继承RequestInterceptor类。
@Slf4j
//@Component
public class TraceIdFeignInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate template) {log.debug("请求拦截了");}
}
2.3.2 配置拦截器
1)全局配置
我们可以在配置类中配置自定义的OpenFeign拦截器。
@Configuration
public class FeignConfig {@Beanpublic TraceIdFeignInterceptor feignInterceptor(){return new TraceIdFeignInterceptor ();}
}
2)局部配置
我们也可以在application.yaml文件中对自定义的OpenFeign拦截器进行局部配置。
feign.client.config.order-service.requestInterceptors[0]=com.beiyou.TraceIdFeignInterceptor #自定义拦截器的完整类路径
feign.client.config.order-service.requestInterceptors[1]=com.beiyou.xxxxxxxxx
3)常用简化版