Skip to content

Java Library to control repetition of events backed by Redis.

License

Notifications You must be signed in to change notification settings

jfisbein/java-rate-limit

Repository files navigation

java-rate-limit

Java library to embed rate limit control functionality inside applications.

Usage

import org.sputnik.ratelimit.domain.CanDoResponse;import org.sputnik.ratelimit.service.JedisConfiguration;
import org.sputnik.ratelimit.service.RateLimiter;

class LoginManager {
    // Configure rate limiter to allow maximum 3 attempts every hour.
  RateLimiter vc = new RateLimiter(JedisConfiguration.builder().setHost("localhost").build(), 
		new EventConfig("testLogin", 3, Duration.ofSeconds(3600)));
	
  private boolean doLogin(String username, String password) {
    boolean isValid = false;
    CanDoResponse response = vc.canDoEvent("testLogin", username);
    if (response.getCanDo()) {
      vc.doEvent("testLogin", username);
      // TODO: check credentials and set isValid value
    } else {
      log.warn("User " + username + " blocked due to exceeding number of login attempt, for " + (response.getWaitMillis()/1000) + " seconds");
      isValid = false;
    }
		
    if (isValid) {
      vc.reset("testLogin", username);
    }
		
    return isValid;
  }
} 

Maven & Gradle

For maven integration simply add this dependency to your pom.xml:

<dependency>
    <groupId>net.saltando</groupId>
    <artifactId>java-rate-limit</artifactId>
    <version>x.y.z</version>
</dependency>

For gradle integration simply add this dependency:

compile 'net.saltando:java-rate-limit:x.y.z'

Where x.y.x is the desired version, always lastest versions is recommended, you can find it at Releases tab.

Javadoc

Javadoc is available at https://javadoc.jitpack.io/com/github/jfisbein/java-rate-limit/latest/javadoc/index.html

Limitations

As no synchronization method is implemented, some edge race conditions could lead to get a false positive or negative response from the method canDoEvent.

About

Java Library to control repetition of events backed by Redis.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •