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 小时前
流量没暴涨,网关却挂了:Spring Cloud Gateway 从 500 QPS 优化到 4200 QPS
后端·spring cloud·架构
小小放舟、1 天前
@JsonCreator 注解详解——从枚举反序列化说起
spring boot·spring·spring cloud·java-ee·maven·intellij-idea·状态模式
JAVA面经实录9171 天前
Spring Cloud Alibaba 微服务企业实战完整文档(架构+规范+调优+故障+源码)
java·运维·spring cloud·微服务
接着奏乐接着舞2 天前
springcloud skywalking
spring·spring cloud·skywalking
小江的记录本2 天前
【Spring全家桶】Spring Cloud 2023.0.x:配置中心:Nacos Config、Apollo(附《思维导图》+《面试高频考点清单》)
java·spring boot·后端·python·spring·spring cloud·面试
huipeng9262 天前
企业级微服务开发实战(三):公共模块设计与统一规范封装
java·spring boot·spring cloud·微服务·架构·系统架构·php
源码宝3 天前
基于SpringCloud+UniApp的智慧工地云平台整体架构设计与实现
java·人工智能·spring cloud·源码·智慧工地·云平台
小江的记录本3 天前
【Spring全家桶】Spring Cloud 2023.0.x:微服务核心理论、CAP/BASE定理(附《思维导图》+《面试高频考点清单》)
java·spring boot·后端·spring·spring cloud·微服务·面试
huipeng9263 天前
企业级微服务开发实战(二):微服务基础设施搭建与中间件部署
java·redis·mysql·spring cloud·微服务·nacos·rabbitmq
Demon1_Coder4 天前
跨域问题CORS
spring cloud