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
相关产品推荐
相关产品推荐

