Package io.servicetalk.concurrent.api
Class RepeatStrategies
- java.lang.Object
-
- io.servicetalk.concurrent.api.RepeatStrategies
-
public final class RepeatStrategies extends java.lang.ObjectA set of strategies to use for repeating withPublisher.repeatWhen(IntFunction),Single.repeatWhen(IntFunction)andCompletable.repeatWhen(IntFunction)or in general.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classRepeatStrategies.TerminateRepeatExceptionAnExceptioninstance used to indicate termination of repeats.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.util.function.IntFunction<Completable>repeatWithConstantBackoffDeltaJitter(int maxRepeats, java.time.Duration delay, java.time.Duration jitter, Executor timerExecutor)Creates a new repeat function that adds the passed constantDurationas delay between repeats.static java.util.function.IntFunction<Completable>repeatWithConstantBackoffDeltaJitter(java.time.Duration delay, java.time.Duration jitter, Executor timerExecutor)Creates a new repeat function that adds the passed constantDurationas delay between repeats.static java.util.function.IntFunction<Completable>repeatWithConstantBackoffFullJitter(int maxRepeats, java.time.Duration delay, Executor timerExecutor)Creates a new repeat function that adds the passed constantDurationas delay between repeats.static java.util.function.IntFunction<Completable>repeatWithConstantBackoffFullJitter(java.time.Duration delay, Executor timerExecutor)Creates a new repeat function that adds the passed constantDurationas delay between repeats.static java.util.function.IntFunction<Completable>repeatWithExponentialBackoffDeltaJitter(int maxRepeats, java.time.Duration initialDelay, java.time.Duration jitter, java.time.Duration maxDelay, Executor timerExecutor)Creates a new repeat function that adds a delay between repeats.static java.util.function.IntFunction<Completable>repeatWithExponentialBackoffDeltaJitter(java.time.Duration initialDelay, java.time.Duration jitter, java.time.Duration maxDelay, Executor timerExecutor)Creates a new repeat function that adds a delay between repeats.static java.util.function.IntFunction<Completable>repeatWithExponentialBackoffFullJitter(int maxRepeats, java.time.Duration initialDelay, java.time.Duration maxDelay, Executor timerExecutor)Creates a new repeat function that adds a delay between repeats.static java.util.function.IntFunction<Completable>repeatWithExponentialBackoffFullJitter(java.time.Duration initialDelay, java.time.Duration maxDelay, Executor timerExecutor)Creates a new repeat function that adds a delay between repeats.
-
-
-
Method Detail
-
repeatWithConstantBackoffFullJitter
public static java.util.function.IntFunction<Completable> repeatWithConstantBackoffFullJitter(java.time.Duration delay, Executor timerExecutor)
Creates a new repeat function that adds the passed constantDurationas delay between repeats.- Parameters:
delay- ConstantDurationof delay between repeats.timerExecutor-Executorto be used to schedule timers for delay.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithConstantBackoffFullJitter
public static java.util.function.IntFunction<Completable> repeatWithConstantBackoffFullJitter(int maxRepeats, java.time.Duration delay, Executor timerExecutor)
Creates a new repeat function that adds the passed constantDurationas delay between repeats.- Parameters:
maxRepeats- Maximum number of allowed repeats, after which the returnedIntFunctionwill return a failedCompletablewithRepeatStrategies.TerminateRepeatExceptionas the cause.delay- ConstantDurationof delay between repeats.timerExecutor-Executorto be used to schedule timers for delay.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithConstantBackoffDeltaJitter
public static java.util.function.IntFunction<Completable> repeatWithConstantBackoffDeltaJitter(java.time.Duration delay, java.time.Duration jitter, Executor timerExecutor)
Creates a new repeat function that adds the passed constantDurationas delay between repeats.- Parameters:
delay- ConstantDurationof delay between repeats.jitter- The jitter to apply todelayon each repeat.timerExecutor-Executorto be used to schedule timers for delay.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithConstantBackoffDeltaJitter
public static java.util.function.IntFunction<Completable> repeatWithConstantBackoffDeltaJitter(int maxRepeats, java.time.Duration delay, java.time.Duration jitter, Executor timerExecutor)
Creates a new repeat function that adds the passed constantDurationas delay between repeats.- Parameters:
maxRepeats- Maximum number of allowed repeats, after which the returnedIntFunctionwill return a failedCompletablewithRepeatStrategies.TerminateRepeatExceptionas the cause.delay- ConstantDurationof delay between repeats.jitter- The jitter to apply todelayon each repeat.timerExecutor-Executorto be used to schedule timers for delay.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithExponentialBackoffFullJitter
public static java.util.function.IntFunction<Completable> repeatWithExponentialBackoffFullJitter(java.time.Duration initialDelay, java.time.Duration maxDelay, Executor timerExecutor)
Creates a new repeat function that adds a delay between repeats. For first repeat, the delay isinitialDelaywhich is increased exponentially for subsequent repeats. This additionally adds a "Full Jitter" for the backoff as described here.- Parameters:
initialDelay- DelayDurationfor the first repeat and increased exponentially with each repeat.maxDelay- The maximum amount of delay that will be introduced.timerExecutor-Executorto be used to schedule timers for backoff.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithExponentialBackoffFullJitter
public static java.util.function.IntFunction<Completable> repeatWithExponentialBackoffFullJitter(int maxRepeats, java.time.Duration initialDelay, java.time.Duration maxDelay, Executor timerExecutor)
Creates a new repeat function that adds a delay between repeats. For first repeat, the delay isinitialDelaywhich is increased exponentially for subsequent repeats. This additionally adds a "Full Jitter" for the backoff as described here.- Parameters:
maxRepeats- Maximum number of allowed repeats, after which the returnedIntFunctionwill return a failedCompletablewithRepeatStrategies.TerminateRepeatExceptionas the cause.initialDelay- DelayDurationfor the first repeat and increased exponentially with each repeat.maxDelay- The maximum amount of delay that will be introduced.timerExecutor-Executorto be used to schedule timers for backoff.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithExponentialBackoffDeltaJitter
public static java.util.function.IntFunction<Completable> repeatWithExponentialBackoffDeltaJitter(java.time.Duration initialDelay, java.time.Duration jitter, java.time.Duration maxDelay, Executor timerExecutor)
Creates a new repeat function that adds a delay between repeats. For first repeat, the delay isinitialDelaywhich is increased exponentially for subsequent repeats.- Parameters:
initialDelay- DelayDurationfor the first repeat and increased exponentially with each repeat.jitter- The jitter to apply toinitialDelayon each repeat.maxDelay- The maximum amount of delay that will be introduced.timerExecutor-Executorto be used to schedule timers for backoff.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
repeatWithExponentialBackoffDeltaJitter
public static java.util.function.IntFunction<Completable> repeatWithExponentialBackoffDeltaJitter(int maxRepeats, java.time.Duration initialDelay, java.time.Duration jitter, java.time.Duration maxDelay, Executor timerExecutor)
Creates a new repeat function that adds a delay between repeats. For first repeat, the delay isinitialDelaywhich is increased exponentially for subsequent repeats.- Parameters:
maxRepeats- Maximum number of allowed repeats, after which the returnedIntFunctionwill return a failedCompletablewithRepeatStrategies.TerminateRepeatExceptionas the cause.initialDelay- DelayDurationfor the first repeat and increased exponentially with each repeat.jitter- The jitter to apply toinitialDelayon each repeat.maxDelay- The maximum amount of delay that will be introduced.timerExecutor-Executorto be used to schedule timers for backoff.- Returns:
- An
IntFunctionto be used for repeats which given a repeat count returns aCompletablethat terminates successfully when the source has to be repeated or terminates with error if the source should not be repeated.
-
-