public class BackoffThrottler extends Object
min(pow(backoffCoefficient, failureCount - 1) * initialSleep, maxSleep);
Example usage:
BackoffThrottler throttler = new BackoffThrottler(1000, 60000, 2);
while(!stopped) {
try {
throttler.throttle();
// some code that can fail and should be throttled
...
throttler.success();
}
catch (Exception e) {
throttler.failure();
}
}
| Constructor and Description |
|---|
BackoffThrottler(long initialSleep,
long maxSleep,
double backoffCoefficient)
Construct an instance of the throttler.
|
| Modifier and Type | Method and Description |
|---|---|
void |
failure()
Increment failure count.
|
void |
success()
Resent failure count to 0.
|
void |
throttle()
Sleep if there were failures since the last success call.
|
public BackoffThrottler(long initialSleep,
long maxSleep,
double backoffCoefficient)
initialSleep - time to sleep on the first failuremaxSleep - maximum time to sleep independently of number of failuresbackoffCoefficient - coefficient used to calculate the next time to sleep.public void throttle()
throws InterruptedException
InterruptedExceptionpublic void success()
public void failure()