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

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

springcloud使用crypto接口加解密 springcloud接口安全_spring

 

springcloud使用crypto接口加解密 springcloud接口安全_java_02

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

Feign在消费端使用

构建 Feign 工程

springcloud使用crypto接口加解密 springcloud接口安全_spring boot_03

 -> pom 中引入依赖

springcloud使用crypto接口加解密 springcloud接口安全_客户端_04

 -> 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使用crypto接口加解密 springcloud接口安全_客户端_05

 -> Service 接口

springcloud使用crypto接口加解密 springcloud接口安全_spring boot_06

springcloud使用crypto接口加解密 springcloud接口安全_spring_07

 

 -> Controller

springcloud使用crypto接口加解密 springcloud接口安全_客户端_08

 -> 测试

springcloud使用crypto接口加解密 springcloud接口安全_spring_09

 注意:

springcloud使用crypto接口加解密 springcloud接口安全_spring_10

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

springcloud使用crypto接口加解密 springcloud接口安全_java_11

 

springcloud使用crypto接口加解密 springcloud接口安全_负载均衡_12

 错误如下:

springcloud使用crypto接口加解密 springcloud接口安全_java_13

 、


OpenFeign 超时控制

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

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

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

springcloud使用crypto接口加解密 springcloud接口安全_负载均衡_14

-> 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使用crypto接口加解密 springcloud接口安全_spring_15

 -> 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使用crypto接口加解密 springcloud接口安全_负载均衡_16