OpenFeign的使用

OpenFeign 可让客户端向服务端发送请求

OpenFeign 可用于替代 Ribbon+RestTemplate。

OpenFeign 需要定义一个接口使用,默认仍是轮询算法

OpenFeign的配置

依赖

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

yaml中不需要做额外配置,如果是集群环境的话正常连接集群即可
给出示例:

OpenFeign的使用

OpenFeign的使用

通过客户端向服务端发送请求,下面以此为例。

在启动类中添加注解

OpenFeign的使用


Service层中添加接口

该接口的作用是,只要调用了 getPaymentById() 方法,客户端就向cloud-payment-service 服务器发送/payment/get/{id}请求

OpenFeign的使用


controller层

controller 没啥区别,直接使用函数即可

OpenFeign的使用

超时控制

OpenFeign默认等待时间为1s,如果超过1s就会直接报错。

但对于一些耗时长的业务而言1s是不够的,我们可以在yaml文件里手动设置OpenFeign的等待时间。

单位ms

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

日志打印

需要注入bean、配置yaml

config类如下:

FULL 为日志级别

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

日志级别如下:

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

yaml配置

以debug方式显示PaymentFeignService类的日志信息

OpenFeign的使用

效果如图

OpenFeign的使用

上一篇:压测时频繁full-gc问题排查


下一篇:polkit pkexec本地提权(CVE-2021-4034)