public final class BackoffThrottler
extends java.lang.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(java.time.Duration initialSleep,
java.time.Duration 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(java.time.Duration initialSleep, @Nullable java.time.Duration 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.