Class RateLimitInterceptor
java.lang.Object
tech.riemann.nif.web.ratelimit.RateLimitInterceptor
- All Implemented Interfaces:
org.springframework.web.servlet.HandlerInterceptor
public class RateLimitInterceptor
extends Object
implements org.springframework.web.servlet.HandlerInterceptor
限流拦截器
拦截带有@RateLimit注解的请求,执行限流控制
配置优先级: 1. @RateLimit注解配置(最高优先级) 2. 配置文件中的rules规则(按接口路径匹配) 3. 配置文件中的defaultConfig默认配置(最低优先级)
限流 key 语义(H8 修正,非 SpEL):
#ip:内置快捷方式,按客户端 IP 限流(RateLimit.key()默认值)#参数名:按请求 query/表单参数值限流(参数缺失时记录 warn 日志并回退为按接口 URI 限流)- 普通字符串:固定 key(所有请求共享同一限流桶)
执行流程: 1. 检查请求是否标记@RateLimit注解或匹配配置规则 2. 解析限流key 3. 根据限流算法获取对应的限流器 4. 尝试获取许可,失败则返回429错误
- Author:
- Kerbores(kerbores@riemann.tech)
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionRateLimitInterceptor(List<RateLimiter> rateLimiters, boolean enabled, double defaultPermitsPerSecond, RateLimitAlgorithm defaultAlgorithm, Map<String, RateLimitInterceptor.RateLimitRule> rules) RateLimitInterceptor(List<RateLimiter> rateLimiters, boolean enabled, double defaultPermitsPerSecond, RateLimitAlgorithm defaultAlgorithm, Map<String, RateLimitInterceptor.RateLimitRule> rules, List<String> excludePathPatterns) -
Method Summary
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.web.servlet.HandlerInterceptor
afterCompletion, postHandle
-
Constructor Details
-
RateLimitInterceptor
public RateLimitInterceptor(List<RateLimiter> rateLimiters, boolean enabled, double defaultPermitsPerSecond, RateLimitAlgorithm defaultAlgorithm, Map<String, RateLimitInterceptor.RateLimitRule> rules) -
RateLimitInterceptor
public RateLimitInterceptor(List<RateLimiter> rateLimiters, boolean enabled, double defaultPermitsPerSecond, RateLimitAlgorithm defaultAlgorithm, Map<String, RateLimitInterceptor.RateLimitRule> rules, List<String> excludePathPatterns)
-
-
Method Details
-
preHandle
-