Skip to content

Java implementation of token-bucket algorithm for rate-limiting(throttling)

License

Notifications You must be signed in to change notification settings

turgaycelik/bucket4j

 
 

Repository files navigation

Bucket4j - is a java implementation of token-bucket algorithm for rate limiting

Build Status Join the chat at https://gitter.im/vladimir-bukhtoyarov/bucket4j Quality Gate

Advantages of Bucket4j

  • 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.

Documentation

Examples:

Basics:

Supported back-ends without asynchronous support:

  • Jcache integration - documentation and examples about usage Bucket4j with in-memory grids which supports JCache API (JSR 107) specification.

Supported back-ends with asynchronous support:

Archieve:

Third-party integrations:

Third-party Demos:

Get Bucket4j library

You can add Bucket4j to your project as maven dependency

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>

You can build Bucket4j from sources

git clone https://github.com/vladimir-bukhtoyarov/bucket4j.git
cd bucket4j
mvn clean install

Have a question?

Feel free to ask in the gitter chat

License

Copyright 2015-2017 Vladimir Bukhtoyarov Licensed under the Apache Software License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.

About

Java implementation of token-bucket algorithm for rate-limiting(throttling)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 82.7%
  • Groovy 17.2%
  • Shell 0.1%