一、简介
同样是客户端的负载均衡和服务调用工具,客户端的声明式的Web Service客户端,只需定义一个服务的接口,然后在上面添加注解,完成对服务方接口的绑定。OpenFeign 是对原有 Feign 的封装,使之支持SpringMVC标准注解和HttpMessageConverters。简化了使用Ribbon时,封装服务调用客户端的开发量。实际上 OpenFeign 也包含了Ribbon,默认带了负载均衡。
github:https://github.com/spring-cloud/spring-cloud-openfeign
二、服务调用方配置
配置文件 (仅仅是Eureka的配置或Consul等)
1
2
3
4
5
6
7
8server:
port: 端口
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://xxx.com:port/eureka, http://xxx.com:port/eureka添加 FeignService 接口,接口中声明的为微服务controller中的接口方法。添加@FeignClient(value = “注册到注册中心的服务名”),完成对服务方接口的绑定。
1
2
3
4
5
6
7
8
"服务名") // 注册到注册中心中的服务名 (value =
public interface FeignService {
// 下面这些可直接从微服务中复制过来。
"/xxx/get/{id}") (value =
public CommonResult getXXXByID(@PathVariable("id") String id);
}启动类:添加 @EnableFeignClients 注解
Controller
直接注入 FeignService,通过FeignService 来进行服务调用。
1
2
3
4
5
6
7
private FeignService feignService;
"xxx/xxx/{id}") (value =
public CommonResult<Payment> getXXXById(@PathVariable("id") String id){
return feignService.getXXXByID(id);
}
三、连接、访问超时控制
由于OpenFeign 实际上引用了Ribbon,他的超时也是由Ribbon来实现的,因此实际上是对Ribbon的配置。
1 | ribbon: |
四、日志打印
OpenFeign 提供了日志打印功能,可以通过配置日志级别来查看Http请求中的细节。
1. 日志级别:
- None:默认配置,不显示日志
- BASIC:仅记录请求方法、URL、响应状态码和执行时间
- HEADERS:除了BASIC 中定义的信息之外,还有请求头和响应的头信息
- FULL:HEADERS中的信息 + 请求和响应的正文及元数据
2. 配置使用
yaml配置
1
2
3
4logging:
level:
# 直接复制FeignService的参考地址
com.beyonderwei.springcloud.service.FeignService: debugOpenFeign 日志配置类
1
2
3
4
5
6
7
public class FeignConfig {
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}重新启动后即可在控制台看到详细的调用信息。
...
...
00:00
00:00
本文为作者原创文章,未经作者允许不得转载。