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

相关推荐
廋到被风吹走3 小时前
【Spring】Spring Cloud 熔断降级深度解析:从 Hystrix 到 Resilience4j 的演进
spring·spring cloud·hystrix
萧曵 丶9 小时前
Spring Cloud Alibaba 详解
spring·spring cloud
廋到被风吹走1 天前
【Spring】Spring Cloud 分布式事务:Seata AT/TCC/Saga 模式选型指南
分布式·spring·spring cloud
刘一说1 天前
Spring Cloud微服务中的分布式追踪:从故障定位到性能优化的革命性实践
分布式·spring cloud·微服务
计算机程序设计小李同学2 天前
平价药店销售与管理系统
java·mysql·spring·spring cloud·ssm
廋到被风吹走2 天前
【Spring】Spring Cloud 链路追踪:SkyWalking/Pinpoint 字节码增强与 TraceId 传递机制
spring·spring cloud·skywalking
自燃人~2 天前
DiscoveryClient 和 NamingService
spring·spring cloud·nacos
u0104058362 天前
Spring Boot与Spring Cloud的协同:构建健壮的微服务架构
spring boot·spring cloud·架构
用户2190326527352 天前
SpringCloud分布式追踪深度实战:Sleuth+Zipkin从入门到生产部署全攻略
分布式·后端·spring cloud
南山十一少2 天前
最新款2025版的IDEA的下载、注册以及进行spring boot 工程和spring cloud工程的搭建和使用
spring boot·spring cloud·intellij-idea