OpenFeign

OpenFeign

概述

OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的**@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理方式山生实现类,实现类中做负载均衡**并调用其它服务。

Fegin

Feign是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务,Feign的使用方法是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务。现在Fegin已停用。

openFeign的依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

OpenFeign的服务调用

概述

以前我们的服务消费者使用Ribbon+RestTemplate进行服务调用,现在我们使用OpenFeign来进行调用,一个接口+一个注解(@FeignClient)的方式。

yml文件

server:
  port: 8020
spring:
  application:
    name: eureka-feign
eureka:
  client:
    # 表示将自己注册进EurekaServer,默认为true
    register-with-eureka: false
    # 是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须配置为true
    fetch-registry: true
    service-url:
      # 集群注册
      defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka
  • 主启动类(添加@EnableFeignClients注解)
    在这里插入图片描述

  • service业务层接口添加FeignClient注解
    在这里插入图片描述
    注意还要加上@Component注解

属性:

  • name:对象名
  • url:对象的地址

OpenFeign的超时控制

OpenFeign默认等待1秒钟,超过后报错。

设置OpenFeign的超时等待

因为具体发送请求包含负载均衡都是由底层的Ribbon实现的,所以我们实际上是要配置Ribbon的超时设置。

yml配置
server:
  port: 8020
spring:
  application:
    name: eureka-feign
eureka:
  client:
    # 表示将自己注册进EurekaServer,默认为true
    register-with-eureka: false
    # 是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须配置为true
    fetch-registry: true
    service-url:
      # 集群注册
      defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka
# 设置OpenFeign的客户端超时时间(OpenFeign底层是Ribbon)
ribbon:
  # 读取超时时间,建立连接后服务器取到可用资源所用的时间
  ReadTimeout: 5000
  # 连接所用的时间,适用于网络正常情况下,两端连接所用的时间
  ConnectTimeout: 5000

OpenFeign日志增强

OpenFeign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解Feign中Http请求的细节。

日志级别

OpenFeign有一下几个日志级别

  1. NONE:默认的,不显示任何日志。
  2. BASIC:仅记录请求方法,URL,响应状态码及执行时间。
  3. HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息。
  4. FULL:除了HEADERS中定义的信息之外,还有请求和响应正文元数据。

日志配置

OpenFeign的日志需要专门有个日志Bean来定义

在@Configuration的类中配置

@Bean
public Logger.Level feignLoggerLevel() {
	return Logger.Level.FULL;
}

Logger是OpenFeign的Logger类,不要用错了(import feign.Logger;)

在application.yml中配置每个业务类的日志监控级别。

server:
  port: 8020
spring:
  application:
    name: eureka-feign
eureka:
  client:
    # 表示将自己注册进EurekaServer,默认为true
    register-with-eureka: false
    # 是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须配置为true
    fetch-registry: true
    service-url:
      # 集群注册
      defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka
# 设置OpenFeign的客户端超时时间(OpenFeign底层是Ribbon)
ribbon:
  # 读取超时时间,建立连接后服务器取到可用资源所用的时间
  ReadTimeout: 5000
  # 连接所用的时间,适用于网络正常情况下,两端连接所用的时间
  ConnectTimeout: 5000
logging:
  level:
    # feign日志已什么级别监控哪一个接口
    文件夹名称.接口名名称: debug
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值