# dynamic-limiter
**Repository Path**: lingfengx/dynamic-limiter
## Basic Information
- **Project Name**: dynamic-limiter
- **Description**: 基于redis的动态限流中间件,支持分布式限流,支持动态调整限流参数,支持多种限流算法,支持黑白名单过滤,支持SPEL表达式。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2025-08-13
- **Last Updated**: 2025-12-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
中文
# 动态限流中间件
[](https://github.com/lingfengcoder/dynamic-limiter)
[](https://codecov.io/gh/lingfengcoder/dynamic-limiter)
-------
## 什么是 dynamic-x系列
目前有:
- dynamic-limiter
- dynamic-config
dynamic-x 系列 使用足够简单的轻量级代码实现多种中间件能力,比如:动态配置、动态限流等。
# dynamic-limiter
基于redis的动态限流中间件,支持分布式限流,支持动态调整限流参数,支持多种限流算法,支持黑白名单过滤,支持SPEL表达式。
提供以下功能支持:
- 方法级限流 - 支持方法级别的限流。
- 动态调整 - 应用运行时动态变更限流参数,(滑动窗口举例)包括不限于:窗口大小、最大通过数、黑白名单等。
- 限流算法 - 内置三种限流算法:滑动窗口、令牌桶、漏桶算法。
- 黑白名单 - 支持黑白名单过滤。
- SPEL支持 - 支持SPEL表达式,可根据方法参数动态限流
## 快速开始
spring 环境可以直接引入starter
```xml
io.github.lingfengcoder
dynamic-limiter-starter
${lastest.version}
```
启动类增加开启注解
```java
@EnableDynamicLimiter(namespace="demo-appname")
public class ServletInitializer extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ServletInitializer.class, args);
}
}
```
在需要限流的方法上增加注解
```java
class Test{
//
@RdsLimit(key = "demoLimit(#userId,#tenantId)", configBean = LimitConfig.class, fallBack = "demoLimitFallback", autoRelease = false)
public Boolean demoLimit(String userId, String tenantId) {
//通过限流
return true;
}
//demoLimitFallback限流降级方法
public Boolean demoLimitFallback(String userId, String tenantId) {
//限流降级
return false;
}
}
```
配置文件(需要是bean对象)
```java
//动态配置文件
@DynamicValConfigMap(file = "limit.properties", prefix = "limit.something")
public class LimitConfig extends AbstractRdsLimitConfig {
@Value("true")
private boolean enable;
//#滑动窗口的大小
@Value("10")
private int boxLen;
//#滑动窗口的时间
@Value("10000")
private long boxTime;
@Override
public Function