Spring Cloud RequestRateLimiter GatewayFilter工廠

2024-01-04 17:46 更新

RequestRateLimiter GatewayFilter工廠使用RateLimiter實現(xiàn)來確定是否允許繼續(xù)當(dāng)前請求。如果不是,則返回狀態(tài)HTTP 429 - Too Many Requests(默認)。

該過濾器采用一個可選的keyResolver參數(shù)和特定于速率限制器的參數(shù)(請參見下文)。

keyResolver是實現(xiàn)KeyResolver接口的bean。在配置中,使用SpEL通過名稱引用bean。#{@myKeyResolver}是引用名稱為myKeyResolver的bean的SpEL表達式。

KeyResolver.java。 

public interface KeyResolver {
	Mono<String> resolve(ServerWebExchange exchange);
}

KeyResolver接口允許可插拔策略派生用于限制請求的密鑰。在未來的里程碑中,將有一些KeyResolver實現(xiàn)。

KeyResolver的默認實現(xiàn)是PrincipalNameKeyResolver,它從ServerWebExchange檢索Principal并調(diào)用Principal.getName()。

默認情況下,如果KeyResolver未找到密鑰,則請求將被拒絕。可以使用spring.cloud.gateway.filter.request-rate-limiter.deny-empty-key(對或錯)和spring.cloud.gateway.filter.request-rate-limiter.empty-key-status-code屬性來調(diào)整此行為。

 無法通過“快捷方式”符號配置RequestRateLimiter。以下示例無效

application.properties。 

# INVALID SHORTCUT CONFIGURATION
spring.cloud.gateway.routes[0].filters[0]=RequestRateLimiter=2, 2, #{@userkeyresolver}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號