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. 请求/响应压缩

相关推荐
空中海16 分钟前
Spring Cloud 专家级面试题库
spring·spring cloud·面试
phltxy4 小时前
Spring Cloud入门到实战:微服务架构一站式学习
spring cloud·微服务·架构
身如柳絮随风扬6 小时前
Spring Boot + Spring Cloud 集成 Elasticsearch:从零搭建企业级搜索服务
spring boot·elasticsearch·spring cloud
sing~~6 小时前
SpringCloud的了解和使用
后端·spring·spring cloud
慕容卡卡7 小时前
Claude 使用神器(web页面)--CloudCLI UI
java·开发语言·前端·人工智能·ui·spring cloud
空中海7 小时前
Spring Cloud第三篇:通信篇 — OpenFeign 与负载均衡
spring·spring cloud·负载均衡
生活真难1 天前
SpringCloud - 任务调度 - xxl-job
后端·spring·spring cloud
Devin~Y1 天前
大厂Java面试实录:Spring Boot/Cloud + Redis/Kafka + JWT + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·spring security·jwt
南部余额1 天前
Spring Cloud LoadBalancer 详解:客户端负载均衡的原理与实践
spring·spring cloud·负载均衡·微服务架构·轮询算法·loadbanlancer
梵得儿SHI1 天前
SpringCloud 进阶拓展:分布式事务终极解决方案 Seata AT/TCC 模式全栈实战(含生产级避坑指南)
分布式·spring·spring cloud·seata·分布式事务·tcc·tc集群部署