Package dev.relism.flash.ext.limiter
Class LimiterExtension
java.lang.Object
dev.relism.flash.ext.limiter.LimiterExtension
- All Implemented Interfaces:
dev.relism.flash.extension.FlashExtension
public final class LimiterExtension
extends Object
implements dev.relism.flash.extension.FlashExtension
Rate-limiting extension for Flash.
At
:
invalid reference
#provide
- Creates a single
BucketStoreshared by all rules in this extension instance. - Provides a
Guardin theFlashContextfor manual use on lambda routes. - Registers an
AnnotationProcessorforLimit: reads the annotation once per handler class at boot, resolves the key lambda fail-fast, then returns a pre-compiled middleware — zero map lookups at request time.
Annotation-based (class handlers)
@Limit(requests = 100, window = 1) // 100 req/s per IP
public class SearchHandler extends RequestHandler { ... }
@Limit(key = "auth_user", requests = 20, window = 1,
windowUnit = TimeUnit.MINUTES,
strategy = LimitStrategy.TOKEN_BUCKET)
public class ReportHandler extends RequestHandler { ... }
Lambda routes (via Guard)
app.install(new LimiterExtension(
new LimiterConfig().registerResolver("auth_user", req -> SecurityIdentity.current().principal().name())));
// inside a FlashContext.onReady(...) callback:
Guard guard = ctx.require(Guard.class);
app.get("/api/search", handler, guard.limit("ip", 50, 1, TimeUnit.SECONDS));
-
Constructor Summary
ConstructorsConstructorDescriptionInstalls with default config (only the built-in"ip"resolver).LimiterExtension(LimiterConfig config) Installs with a customLimiterConfig(custom resolvers, etc.). -
Method Summary
Modifier and TypeMethodDescriptionvoidconfigure(dev.relism.flash.extension.FlashRegistrar<?> app, dev.relism.flash.extension.FlashContext ctx)
-
Constructor Details
-
LimiterExtension
public LimiterExtension()Installs with default config (only the built-in"ip"resolver). -
LimiterExtension
Installs with a customLimiterConfig(custom resolvers, etc.).
-
-
Method Details
-
configure
public void configure(dev.relism.flash.extension.FlashRegistrar<?> app, dev.relism.flash.extension.FlashContext ctx) - Specified by:
configurein interfacedev.relism.flash.extension.FlashExtension
-