Skip to content

A Java library for Rate-Limiting, providing extensible storage and application framework adaptors.

License

Notifications You must be signed in to change notification settings

mokies/ratelimitj

Repository files navigation

RateLimitJ Logo

RateLimitJ

Build Status Codecov Maven Central license

A Java library for rate limiting, assembled using extensible storage and application framework adaptors. The library's interfaces support thread-safe sync, async, and reactive usage patterns.

Modules

RateLimitJ provides the following stable plugable modules:

Features

  • Uses an efficient approximated sliding window algorithm for rate limiting
  • Multiple limit rules per instance

Binaries/Download

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at Maven Central.

Example for Maven:

<dependency>
  <groupId>es.moki.ratelimitj</groupId>
  <artifactId>ratelimitj-redis</artifactId>
  <version>${ratelimitj-redis.version}</version>
</dependency>

Prerequisite

  • RateLimitJ requires Java 8

Roadmap

Feature Status
Redis sliding window rate limiter production
Dropwizard integration - Bundle production
In-memory sliding window rate limiter stable
In-memory concurrent rate limiter beta
Rate limiting toggles (dark launch) for framework integration beta
Hazelcast sliding window rate limiter development
Enhanced metrics logging back log
Whitelisting & blacklisting of keys back log
Rate limit HTTP header responses back log
Spring integration back log

Building

RateLimitJ is built with Gradle and requires a local Redis for the Redis module. Running docker-compose up -d will start Redis.

To build:

$ git clone https://github.com/mokies/ratelimij.git
$ cd ratelimij/
$ docker-compose up -d
$ ./gradlew

Credits

This library was inspired by the following articles on sliding window rate limiting with Redis:

Background Reading

Authors