Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e699269

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /