Java library for rate limiting. This library was implemented using the token bucket algorithm.
This library has been published on JitPack.
Add it in your root build.gradle at the end of repositories.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.yellowsunn.ratelimits:ratelimits-core:1.1.0'
implementation 'com.github.yellowsunn.ratelimits:ratelimits-inmemory:1.1.0'
}
// Rule that allows 10 requests per second.
RateLimitRule rule = new RateLimitRule(10, Duration.ofSeconds(1L));
RateLimiterFactory factory = new InMemoryRateLimiterFactory();
RateLimiter rateLimiter = factory.getInstance();
// Represents whether acquisition was successful.
boolean isAcquired = rateLimiter.acquire("ip:127.0.0.1", rule);
Rate limiting with Redis storage and distributed lock control with Redisson.
dependencies {
implementation 'com.github.yellowsunn.ratelimits:ratelimits-core:1.1.0'
implementation 'com.github.yellowsunn.ratelimits:ratelimits-redis:1.1.0'
}
// Rule that allows 10 requests per second.
RateLimitRule rule = new RateLimitRule(10, Duration.ofSeconds(1L));
String redisUri = "redis://127.0.0.1:6379";
Config config = new Config();
config.useSingleServer().setAddress(redisUri);
RateLimiterFactory factory = new RedisRateLimiterFactory(RedisClient.create(redisUri), Redisson.create(config));
RateLimiter rateLimiter = factory.getInstance();
// Represents whether acquisition was successful.
boolean isAcquired = rateLimiter.acquire("ip:127.0.0.1", rule);