SpringCloud之OpenFeign

Springboot和SpringCloud的版本如下

xml 复制代码
<dependencyManagement>
    <dependencies>
        <!--springboot 3.2.0-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.2.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--springcloud 2023.0.0-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2023.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

引入OpenFeign相关依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>
 <!--负载均衡的依赖-->
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-loadbalancer</artifactId>
 </dependency>

将服务注册到Nacos或Consul这些过程省略,下面介绍一下OpenFeign的高级用法

1. 日志打印

Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解 Feign 中 Http 请求的细节,对Feign接口的调用情况进行监控和输出。

Feign的日志级别如下:

  • NONE:默认的,不显示任何日志;

  • BASIC:仅记录请求方法、URL、响应状态码及执行时间;

  • HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息;

  • FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。

使用配置类设置日志级别

java 复制代码
@Configuration
public class FeignConfig
{
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}

并且在配置文件中设置日志打印级别

xml 复制代码
# feign日志以什么级别监控哪个接口
logging:
  level:
    com:
      test:
        cloud:
          apis:
            PayFeignApi: debug  # com.test.cloud.apis是Feign接口的包路径

2. 超时控制

在配置文件中配置Feign的连接超时时间和读取超时时间

连接超时时间是指,进行远程调用时和第三方接口建立连接的最长时间;

读取超时时间是指,请求到第三方接口后,等待获取响应结果的时间;

xml 复制代码
spring:
  cloud:
    openfeign:
      client:
        config:
          default:
            connectTimeout: 3000 #连接超时时间
            readTimeout: 3000 #读取超时时间

3. 重试机制

重试是指,在远程调用失败之后,再次进行调用,默认不进行重试

在配置类中进行配置

java 复制代码
@Configuration
public class FeignConfig
{
    @Bean
    public Retryer myRetryer()
    {
        //return Retryer.NEVER_RETRY; //Feign默认配置是不走重试策略的

        //最大请求次数为3(1+2),初始间隔时间为100ms,重试间最大间隔时间为1s
        return new Retryer.Default(100,1,3);
    }
}

4. 修改默认使用的HttpClient

5. 配置请求拦截器

6. 请求/响应压缩

相关推荐
冬天豆腐1 天前
Springcloud,Nacos管理,打jar包后,启动报错
java·spring cloud·maven·jar
爱吃山竹的大肚肚1 天前
依赖冲突快速解决
java·spring boot·后端·spring cloud·maven
用户8307196840822 天前
Spring Boot 启动报错:OpenFeign 隐性循环依赖,排查了整整一下午
java·spring boot·spring cloud
indexsunny2 天前
互联网大厂Java面试实战:从Spring Boot到微服务架构的音视频场景解析
java·spring boot·spring cloud·mybatis·spring security·jwt·flyway
⑩-2 天前
API 网关的作用?Spring Cloud Gateway 原理?
java·服务器·网络·spring cloud
better_liang2 天前
每日Java面试场景题知识点之-Spring Cloud微服务分布式事务解决方案
java·spring cloud·微服务·seata·面试题·分布式事务·tcc
xyyaihxl2 天前
springboot与springcloud对应版本
java·spring boot·spring cloud
lay_liu2 天前
springcloud springboot nacos版本对应
spring boot·spring·spring cloud
LES000LIE2 天前
Spring Cloud
后端·spring·spring cloud
Darkdreams3 天前
Spring Cloud :Hystrix实现优雅的服务容错
spring·spring cloud·hystrix