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

相关推荐
野蛮人6号11 小时前
黑马天机学堂Day01-08.搭建项目环境-本地开发部署方式——不知道nacos的密码是什么
java·spring cloud·黑马程序员·天机学堂·黑马天机学堂
dyonggan14 小时前
IDEA从零搭建SpringCloud Alibaba完整工程
java·spring cloud·intellij-idea
tryxr1 天前
Spring Cloud Gateway
java·开发语言·数据库·网关·spring cloud·gateway
码农学院1 天前
建筑机械行业AI搜索优化技术方案:基于Spring Cloud微服务架构的文件管理与智能化内容推荐系统
人工智能·spring cloud·架构
Devin~Y1 天前
互联网大厂Java面试实战:Spring Boot、MyBatis、Redis、Kafka、JWT、Spring Cloud 与 AI 场景追问
java·spring boot·redis·spring cloud·kafka·mybatis·spring security
_waylau2 天前
Spring Framework HTTP服务客户端详解
java·后端·网络协议·spring·http·spring cloud
tryxr2 天前
Spring Cloud eureka
spring·spring cloud·eureka
野蛮人6号2 天前
黑马天机学堂系列问题之选集8本地服务报错
java·spring cloud·黑马程序员·天机学堂·黑马天机学堂
rebibabo4 天前
Java进阶(1) | 微服务入门:从单体到 Spring Cloud 全家桶
spring cloud·微服务·nacos·openfeign·服务注册与发现·java进阶·单体架构
乐观的Terry4 天前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程