diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/ThrottlingFilter.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/ThrottlingFilter.java index b8d105a41..e3e8ba138 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/ThrottlingFilter.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/ThrottlingFilter.java @@ -1,37 +1,41 @@ package org.lowcoder.api.framework.filter; -import com.google.common.util.concurrent.RateLimiter; -import jakarta.annotation.PostConstruct; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; +import static java.util.Collections.emptyMap; +import static org.lowcoder.api.framework.filter.FilterOrder.THROTTLING; +import static org.lowcoder.sdk.exception.BizError.REQUEST_THROTTLED; +import static org.lowcoder.sdk.util.ExceptionUtils.ofError; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; + +import javax.annotation.Nonnull; + import org.lowcoder.sdk.config.dynamic.ConfigCenter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.core.Ordered; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.WebFilter; import org.springframework.web.server.WebFilterChain; -import reactor.core.publisher.Mono; - -import javax.annotation.Nonnull; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Supplier; -import static java.util.Collections.emptyMap; -import static org.lowcoder.api.framework.filter.FilterOrder.THROTTLING; -import static org.lowcoder.sdk.exception.BizError.REQUEST_THROTTLED; -import static org.lowcoder.sdk.util.ExceptionUtils.ofError; +import com.google.common.util.concurrent.RateLimiter; +import jakarta.annotation.PostConstruct; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Mono; +@ConditionalOnExpression("${default.api-rate-limit:0} > 0") @SuppressWarnings("UnstableApiUsage") @Slf4j @Component public class ThrottlingFilter implements WebFilter, Ordered { - @Value("${default.apiRateLimit:50}") + @Value("${default.api-rate-limit}") private int defaultApiRateLimit; @@ -44,6 +48,7 @@ public class ThrottlingFilter implements WebFilter, Ordered { @PostConstruct private void init() { urlRateLimiter = configCenter.threshold().ofMap("urlRateLimiter", String.class, Integer.class, emptyMap()); + log.info("API rate limit filter enabled with default rate limit set to: {} requests per second"); } @Nonnull