Package dev.relism.flash.ext.limiter
Annotation Interface Limit
Applies a rate limit to a class-based
RequestHandler.
The annotation is processed at boot time by the LimiterExtension annotation
processor. If key() names a resolver that was never registered,
startup fails immediately with InitializationException.
// 100 req/s per client IP — fixed window
@Limit(requests = 100, window = 1)
public class SearchHandler extends RequestHandler { ... }
// 20 req/min per authenticated user — token bucket
@Limit(key = "auth_user", requests = 20, window = 1, windowUnit = TimeUnit.MINUTES,
strategy = LimitStrategy.TOKEN_BUCKET)
public class ExpensiveHandler extends RequestHandler { ... }
-
Required Element Summary
Required ElementsModifier and TypeRequired ElementDescriptionintMaximum number of requests allowed perwindow().longWindow duration inwindowUnit()units. -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionName of the resolver registered viaLimiterConfig.registerResolver(java.lang.String, dev.relism.flash.ext.limiter.KeyResolver).Rate-limit algorithm.Unit forwindow().
-
Element Details
-
key
String keyName of the resolver registered viaLimiterConfig.registerResolver(java.lang.String, dev.relism.flash.ext.limiter.KeyResolver). Default:"ip".- Default:
"ip"
-
requests
int requestsMaximum number of requests allowed perwindow(). -
window
long windowWindow duration inwindowUnit()units. -
windowUnit
TimeUnit windowUnitUnit forwindow(). Default:TimeUnit.SECONDS.- Default:
SECONDS
-
strategy
LimitStrategy strategyRate-limit algorithm. Default:LimitStrategy.FIXED_WINDOW.- Default:
FIXED_WINDOW
-