I want to present our library to provide rate-limiting functionality in Java - Bucket4j.
Based on our library, you can limit your API in Java.
Through the Bucket4j, we can work in a distributed environment because we have implementations with many databases, such as Redis, Hazelcast, Apache Ignite, Infinispan, Oracle coherence, Dynamodb, PostgreSQL, MySQL, e.t.c.
Also, we have a considerable API to work with Rate-Limiting:
1) Monitoring API - you can monitor all of your limits in runtime through any monitoring system (dropwizard, prometeus, e.t.c).
2) On-the-fly Configuration replacement - you can replace a configuration with a new configuration and distribute tokens as needed.
3) Diagnostic API - to get detailed information about limits.
4) Batching API - to optimize work with database for high load keys.
5) Blocking API
6) Scheduler API
7) Opportunity to work with multi-bandwidth management
...
And many other APIs.If you work with Java and need a rate-limiting in your project, please look to Bucket4j.
GitHub: https://github.com/bucket4j/bucket4j
Report about Bucket4j: https://www.youtube.com/watch?v=kG_hF7p7xYI
Thank you for your attention!