Skip to content

Commit e699269

Browse files
committed
feat: add possibility to turn off rate limit filter
1 parent 20ffff8 commit e699269

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/ThrottlingFilter.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,41 @@
11
package org.lowcoder.api.framework.filter;
22

3-
import com.google.common.util.concurrent.RateLimiter;
4-
import jakarta.annotation.PostConstruct;
5-
import lombok.Getter;
6-
import lombok.extern.slf4j.Slf4j;
3+
import static java.util.Collections.emptyMap;
4+
import static org.lowcoder.api.framework.filter.FilterOrder.THROTTLING;
5+
import static org.lowcoder.sdk.exception.BizError.REQUEST_THROTTLED;
6+
import static org.lowcoder.sdk.util.ExceptionUtils.ofError;
7+
8+
import java.util.Map;
9+
import java.util.concurrent.ConcurrentHashMap;
10+
import java.util.function.Supplier;
11+
12+
import javax.annotation.Nonnull;
13+
714
import org.lowcoder.sdk.config.dynamic.ConfigCenter;
815
import org.springframework.beans.factory.annotation.Autowired;
916
import org.springframework.beans.factory.annotation.Value;
17+
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
1018
import org.springframework.core.Ordered;
1119
import org.springframework.http.server.reactive.ServerHttpRequest;
1220
import org.springframework.stereotype.Component;
1321
import org.springframework.web.server.ServerWebExchange;
1422
import org.springframework.web.server.WebFilter;
1523
import org.springframework.web.server.WebFilterChain;
16-
import reactor.core.publisher.Mono;
17-
18-
import javax.annotation.Nonnull;
19-
import java.util.Map;
20-
import java.util.concurrent.ConcurrentHashMap;
21-
import java.util.function.Supplier;
2224

23-
import static java.util.Collections.emptyMap;
24-
import static org.lowcoder.api.framework.filter.FilterOrder.THROTTLING;
25-
import static org.lowcoder.sdk.exception.BizError.REQUEST_THROTTLED;
26-
import static org.lowcoder.sdk.util.ExceptionUtils.ofError;
25+
import com.google.common.util.concurrent.RateLimiter;
2726

27+
import jakarta.annotation.PostConstruct;
28+
import lombok.Getter;
29+
import lombok.extern.slf4j.Slf4j;
30+
import reactor.core.publisher.Mono;
2831

32+
@ConditionalOnExpression("${default.api-rate-limit:0} > 0")
2933
@SuppressWarnings("UnstableApiUsage")
3034
@Slf4j
3135
@Component
3236
public class ThrottlingFilter implements WebFilter, Ordered {
3337

34-
@Value("${default.apiRateLimit:50}")
38+
@Value("${default.api-rate-limit}")
3539
private int defaultApiRateLimit;
3640

3741

@@ -44,6 +48,7 @@ public class ThrottlingFilter implements WebFilter, Ordered {
4448
@PostConstruct
4549
private void init() {
4650
urlRateLimiter = configCenter.threshold().ofMap("urlRateLimiter", String.class, Integer.class, emptyMap());
51+
log.info("API rate limit filter enabled with default rate limit set to: {} requests per second");
4752
}
4853

4954
@Nonnull

0 commit comments

Comments
 (0)