- Implemented on top of ideas of well known algorithm, which are by de-facto standard for rate limiting in the IT industry.
- Effective lock-free implementation, Bucket4j is good scalable for multithreading case.
- Absolutely non-compromise precision, Bucket4j does not operate with floats or doubles, all calculation are performed in the integer arithmetic, this feature protects end users from calculation errors involved by rounding.
- Ability to switch from one JVM to cluster in two lines of code. Using Bucket4j you are able to limiting something in the cluster of JVMs.
Since release 1.2 the
Bucket4j
supports any GRID solution which compatible with JCache API (JSR 107) specification. Just use your favorite grid including Hazelcast, Ignite, Coherence, Infinispan or any other. - Ability to specify multiple bandwidths per bucket. For example you can limit 1000 events per hours but not often then 100 events per minute.
- Both synchronous and asynchronous API.
- Basic-usage - examples of basic usage.
- Advanced-usage - examples of advanced usage.
- Asynchronous-usage - examples of asynchronous usage.
- Token bucket wikipedia - wikipedia page describes the token-bucket algorithm in classical form.
- Non-formal overview of token-bucket algorithm - the brief overview of token-bucket algorithm.
- Jcache integration - documentation and examples about usage
Bucket4j
with in-memory grids which supportsJCache API (JSR 107)
specification.
- Hazelcast integration - documentation and examples for
bucket4j-hazelcast
module. - Apache Ignite integration - documentation and examples for
bucket4j-ignite
module. - Infinspan integration - documentation and examples for
bucket4j-infinispan
module.
- MarcGiffing/Spring Boot Starter for Bucket4j . Demos of usage (incluing Zuul and Hazelcast) can be found there bucket4j-spring-boot-starter-examples.
- JHipster/JHipster API Gateway
- Zivver/Dropwizard Ratelimit
The Bucket4j is distributed through both JCenter and Maven Central, use any of them:
<dependency>
<groupId>com.github.vladimir-bukhtoyarov</groupId>
<artifactId>bucket4j-core</artifactId>
<version>3.0.2</version>
</dependency>
git clone https://github.com/vladimir-bukhtoyarov/bucket4j.git
cd bucket4j
mvn clean install
Feel free to ask in the gitter chat
Copyright 2015-2017 Vladimir Bukhtoyarov Licensed under the Apache Software License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.