OpenFeign概述
- Feign是一个声明式的WebService客户端。使用Feign能让编写Web Service客户端更加简单。
- 它的使用方法是
定义一个服务接口然后在 上面添加注解
。Feign也支持可插拔式的编码器和解码器。 - SpringCloud对Feign进行了封装使其支持了Spring MVC标准注解和HttpMessageConverters.
- Feign可以与Eureka和Ribbon组合使用以支持负载均衡
OpenFeign作用:
下面的Feign 即指的是OpenFeign
OpenFeign 和 Feign(以停止维护) 区别:
OpenFeign使用
OpenFeign用在服务的调用方,使用方法是 接口 + 注解
- 先在项目添加依赖
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
-
主启动类添加注解
@EnableFeignClients
@EnableFeignClients @EnableEurekaClient @EnableDiscoveryClient @SpringBootApplication public class SpringcloudConsumerOrderApplication {
-
写新建服务接口并添加注解:
注意项:
@FeignClient(value = "SPRINGCLOUD-PAYMENT-PROVIDER"
) // 要调用的微服务名@Component @FeignClient(value = "SPRINGCLOUD-PAYMENT-PROVIDER") // 要调用的微服务名 public interface OpenFeignPaymentServer { // 对应为服务提供者controller方法 @GetMapping("/payment/get/{id}") public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id); }
-
Controller调用代码
直接注入,然后调用即可
OpenFeign超时控制
OpenFeign调用服务端,默认等待是一秒,超过后会报错
OpenFeign超时控制配置:
OpenFeign默认是支持Ribbon,我们只需要修改配置就行:
ribbon:
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
ReadTimeout: 5000
#指的是建立连接后从服务器读取到可用资源所用的时间
ConnectTimeout: 5000
OpenFeign负载均衡
OpenFeign默认是支持Ribbon的,在使用OpenFeign时我们不需要任何配置,OpenFeign就支持负载均衡功能
OpenFeign日志
OpenFeign日志级别:
OpenFeign日志的开启:
-
配置日志bean
-
配置文件YML需要开启日志的Feign客户端
logging: level: # feign日志以什么级别监控哪个接口 com.fyj.springcloud.service.PaymentFeignService: debug