简介
声明式WebService客户端,定义一个服务接口再在上面加注解即可。它也支持可拔插式的编码器和解码器。springcloud对Fegin进行简单封装,使其支持mvc标准注解和HttpMessageConverters。
消费端使用feign
-
引入依赖
-
yml配置
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka
将消费端加入注册中心集群
-
主启动类加**@EnableFeignClient**,不用加@EnableDiscoveryClient
-
新建服务层接口对应要调用的提供者的接口
@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
@GetMapping(value = "/payment/get/{id}")
public CommonResult getPaymentById(@PathVariable("id") Long id);
}
- 控制层注入4中的service再调用方法即可
超时控制
OpenFeign默认使用ribbon进行负载均衡管理,等待接口调用默认只等待1s,超时就报错。
可以在yml中加如下配置来设置超时
ribbon:
ReadTimeout: 5000
ConnectTimeout: 5000
日志打印
对Feign接口的调用情况进行监控和输出。
- NONE: 默 认 的 , 不显示任何日志
- BASIC: 仅 记 录 请 求 方 法 、 URL 、 响 应 状 态 码 及 执 行 时 间
- HEADERS: 除 了 BAS ℃ 中 定 义 的 信 息 之 外 , 还 有 请 求 和 响 应 的 头 信 息 ;
- FULL: 除 了 HEADERS 中 定 义 的 信 息 之 外 , 还 有 请 求 和 响 应 的 止 文 及 元 数 据
配置日志bean
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
yml中开启日志的Feign客户端
logging:
level:
com.ty.springcloud.service.PaymentFeignService: debug