public interface RetryCounter extends Retryable
RetryCounter
can be used in loops to test whether a retry should
take place and in case a retry is to take place, then a given period of time
(delay) is waited and the internal retry counter is decremented. In case no
more retries are "available" the business logic may act accordingly such as
throwing an exception.
In case a delay greater than 0 is set, then each retry is being delayed by the according amount of milliseconds, in case no retries are left, then delaying is skipped. A delay of 0 or smaller skips delaying altogether.
The first call to nextRetry()
does not delay as the first call is
not considered to be a retry. In case an exponential retry delay extension
time has been provided, then the retry delay upon calling
nextRetry()
is extended by that exponential delay (being increased
for each retry).
ATTENTION: The first call the nextRetry()
increments the retry
counter getRetryCount()
to be 1 and not 0, so the retry counter is
actually a "try" counter, having the first "try" upon invoking
nextRetry()
.
Modifier and Type | Method and Description |
---|---|
long |
getCurrentRetryDelayInMs()
Returns the current delay before each retry to wait in milliseconds.
|
long |
getExpRetryDelayExtensionInMs()
Returns the exponential retry delay extension time in milliseconds.
|
long |
getInitialRetryDelayInMs()
Returns the initial delay before each retry to wait in milliseconds.
|
long |
getNextRetryDelayInMs()
Calculates the next retry delay in milliseconds.
|
int |
getRetryCount()
The current state regarding the retires.
|
int |
getRetryNumber()
Returns the number of retires this instance allows altogether.
|
boolean |
nextRetry()
Tests whether a next retry is possible.
|
hasNextRetry
long getNextRetryDelayInMs()
nextRetry()
method will wait in case its rules match for doing a
sleep.long getInitialRetryDelayInMs()
getCurrentRetryDelayInMs()
is calculated from the initial delay
and the exponential retry delay added for each retry (not added for the
first call to nextRetry()
).long getCurrentRetryDelayInMs()
getInitialRetryDelayInMs()
with the
getExpRetryDelayExtensionInMs()
per retry.
-------------------------------------------------------------------------
The current retry delay gets incremented for each retry by an exponential
retry delay extension time calculated from in case it is greater than 0.
-------------------------------------------------------------------------long getExpRetryDelayExtensionInMs()
nextRetry()
is extended by that
exponential delay (being increased for each retry):
-------------------------------------------------------------------------
"(getRetryDelayInMs() + (Math.pow( 4, getRetryCount() - 1 ) * getExpRetryDelayExtensionInMs())"
-------------------------------------------------------------------------int getRetryNumber()
boolean nextRetry()
nextRetry()
increments the retry
counter getRetryCount()
to be 1 and not 0, so the retry counter
is actually a "try" counter, having the first "try" upon invoking
nextRetry()
.
-------------------------------------------------------------------------nextRetry
in interface Retryable
Retryable.hasNextRetry()
.int getRetryCount()
nextRetry()
increments the retry
counter getRetryCount()
to be 1 and not 0, so the retry counter
is actually a "try" counter, having the first "try" upon invoking
nextRetry()
.
-------------------------------------------------------------------------getRetryCount
in interface Retryable
Copyright © 2016. All rights reserved.