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)