SpringCloud-H-OpenFeign

GitHub:https://github.com/spring-cloud/spring-cloud-openfeign

Feign是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。

SpringCloud-H-OpenFeign

 SpringCloud-H-OpenFeign

 接口+注解 -> 微服务调用接口+@FeignClient

Feign在消费端使用

构建 Feign 工程

SpringCloud-H-OpenFeign

 -> pom 中引入依赖SpringCloud-H-OpenFeign

 -> yml 中添加配置

server:
  port: 80

eureka:
  client:
    #表示是否将自己注册进EurekaServer 默认为 true
    register-with-eureka: false
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #defaultZone: http://localhost:7001/eureka
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #eureka集群,服务分部注册进集群

-> 启动类

SpringCloud-H-OpenFeign

 -> Service 接口

SpringCloud-H-OpenFeign

SpringCloud-H-OpenFeign 

 -> Controller

SpringCloud-H-OpenFeign

 -> 测试

SpringCloud-H-OpenFeign

 注意:

SpringCloud-H-OpenFeign

 正确的应该是 -> 消费者服务接口 声明的方法应与提供者暴露的方法保持一致。否则会找不到方法 404

SpringCloud-H-OpenFeign

 SpringCloud-H-OpenFeign

 错误如下:

SpringCloud-H-OpenFeign

 、


OpenFeign 超时控制

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

在某些情况下,服务端接口返回的时间超过1秒钟,默认Feign客户端只等待1秒钟,导致Feign客户端不想等待了,直接返回报错。为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。

OpenFeign 中天生带着 Ribbon -> 自己支持负载均衡

SpringCloud-H-OpenFeign

-> yml 文件中开启配置

server:
  port: 80

eureka:
  client:
    #表示是否将自己注册进EurekaServer 默认为 true
    register-with-eureka: false
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #defaultZone: http://localhost:7001/eureka
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #eureka集群,服务分部注册进集群

#设置feing客户端超时时间(OpenFeing默认支持ribbon)
ribbon:
  #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间(5000=5秒)
  ReadTimeout: 5000
  #指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000

OpenFeing 日志打印功能

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

对Feing接口的调用情况进行监控和输出

日志级别

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

-> 配置日志Bean

SpringCloud-H-OpenFeign

 -> yml 文件开启日志

server:
  port: 80

eureka:
  client:
    #表示是否将自己注册进EurekaServer 默认为 true
    register-with-eureka: false
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #defaultZone: http://localhost:7001/eureka
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #eureka集群,服务分部注册进集群

#设置feing客户端超时时间(OpenFeing默认支持ribbon)
ribbon:
  #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间(5000=5秒)
  ReadTimeout: 5000
  #指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000

logging:
  level:
    # feign 日志以什么级别监控那个接口
    com.atguigu.springcloud.service.PaymentFeignService: debug

-> 测试:

SpringCloud-H-OpenFeign

 

上一篇:记录解决问题--利用eureka集群解决微服务调试


下一篇:(11)java Spring Cloud+Spring boot+mybatis企业快速开发架构之使用Eureka编写服务提供者