OpenFeign:Spring Cloud声明式服务调用组件
OpenFeign:Spring Cloud声明式服务调用组件
问题总结
- OpenFeign?
- Feign VS OpenFeign?
- OpenFeign实现远程服务调用?
- OpenFeign超时控制?
- OpenFeign日志增强?
问题答案
- Open Feign
Spring官方推出的一种声明式服务端调用与负载均衡组件。
- OpenFeign常用注解
注解 | 说明 |
---|---|
@FeignClient | 通知OpenFeign组件对@RequestMapping注解下的接口解析,并通过动态代理的方式实现类,实现负载均衡和服务调用 |
@EnableFeignClients | 用于开启OpenFeign功能,当Spring Cloud应用启动时,OpenFeign会扫描标有@FeignClient注解的接口,生成代理并注册到Spring容器中 |
@RequestMapping | 略 |
@GetMapping | 略 |
@PostMapping | 略 |
- Feign VS OpenFeign
- 相同点
- 都是Spring Cloud下的远程调用和负载均衡组件
- 都可以实现远程调用和负载均衡
- 都继承了Ribbon,利用Ribbon维护了可用服务清单,并通过Ribbon实现了客户端的负载均衡。
- 都在客户端定义服务绑定接口并通过注解的方式进行配置,以实现远程服务的调用。
- 不同点
- 依赖项不同,Feign的依赖为spring-cloud-starter-feign,而OpenFeign的依赖为spring-cloud-starter-openfeign
- OpenFeign支持Spring MVC注解
- OpenFeign实现远程服务调用
- 略
- OpenFeign超时控制
- 默认1s超时,由于OpenFeign集成了Ribbon,其服务调用以及负载均衡在底层都是依靠Ribbon实现的,因此OpenFeign超时控制也是通过Ribbon来实现的。
- OpenFeign日志增强
- Logger.Level的具体级别如下:
- NONE:不记录任何信息。
- BASIC:仅记录请求
- HEADERS:除了记录BASIC级别的信息外,还会记录请求喝响应的头信息。
- FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等。