You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.7.2网关部署报错:找不到RequestRateLimiter工厂

Spring Cloud Gateway RequestRateLimiter过滤器找不到异常解决

问题详情

在Spring Boot 2.7.2微服务架构中,为API网关配置RequestRateLimiter限流组件,已部署Redis容器,但启动网关时抛出异常:

Unable to find GatewayFilterFactory with name RequestRateLimiter

网关application.yaml配置如下:

server:
  port: 9090

spring:
  redis:
    host: localhost
    port: 6379
  application:
    name: API-GATEWAY
  config:
    import: configserver:http://localhost:9296
  cloud:
    gateway:
      routes:
        - id: ORDER-SERVICE
          uri: lb://ORDER-SERVICE
          predicates:
            - Path=/order/**
          filters:
            - name: CircuitBreaker
              args:
                name: ORDER-SERVICE
                fallbackuri: forward:/orderServiceFallBack
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 10
                redis-rate-limiter.burstCapacity: 20
        - id: PAYMENT-SERVICE
          uri: lb://PAYMENT-SERVICE
          predicates:
            - Path=/payment/**
          filters:
            - name: CircuitBreaker
              args:
                name: PAYMENT-SERVICE
                fallbackuri: forward:/paymentServiceFallBack
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 1
                redis-rate-limiter.burstCapacity: 1
        - id: PRODUCT-SERVICE
          uri: lb://PRODUCT-SERVICE
          predicates:
            - Path=/product/**
          filters:
            - name: CircuitBreaker
              args:
                name: PRODUCT-SERVICE
                fallbackuri: forward:/productServiceFallBackz
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 1
                redis-rate-limiter.burstCapacity: 1

已添加的Redis依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

解决步骤

1. 补充Spring Cloud Gateway核心依赖

RequestRateLimiter过滤器属于Spring Cloud Gateway模块,仅依赖Redis reactive包不足以加载该过滤器。需确保网关服务引入spring-cloud-starter-gateway依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

注:该依赖默认包含RequestRateLimiterGatewayFilterFactory类,是限流过滤器的核心实现。

2. 确认Spring Cloud版本兼容性

Spring Boot 2.7.2需搭配Spring Cloud 2021.0.x(代号Jubilee)版本,避免版本不兼容导致组件无法加载。在pom.xml中指定Spring Cloud版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3. 排查依赖冲突

检查项目依赖树,确认没有排除spring-cloud-gateway-core模块,避免限流相关类被误移除。可通过Maven命令查看依赖:

mvn dependency:tree

验证操作

完成上述配置后,重启网关服务。若Redis连接正常,RequestRateLimiter过滤器将成功加载,限流规则即可生效。

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:57:28