Interface RetryPolicy
-
- All Superinterfaces:
Supplier<RetryPolicy>
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public interface RetryPolicy extends Supplier<RetryPolicy>
Mechanism for controlling retry of attempts to load data by anAbstractSource.When an
AbstractSourceattempts to load the underlying data it uses aRetryPolicyto govern if and how it retries the load operation in case of errors.The
execute(java.util.function.Supplier)method of each policy implementation must perform at least one attempt to load the data, even if it chooses not to retry in case of errors.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default booleancancel(boolean mayInterruptIfRunning)Cancels the current use of the retry policy.static RetryPolicycreate(Config metaConfig)Constructs aRetryPolicyfrom meta-configuration.<T> Texecute(Supplier<T> call)Invokes the providedSupplierto read the source data and returns that data.default RetryPolicyget()
-
-
-
Method Detail
-
create
static RetryPolicy create(Config metaConfig) throws ConfigMappingException, MissingValueException
Constructs aRetryPolicyfrom meta-configuration.As described with
ConfigSource.create(Config), the config system can loadConfigSources using meta-configuration, which supports specifying retry policies. Thebuilt-in retry policiesand custom ones are supported. (The support is tightly connected withAbstractSource extensionsand will not be automatically provided by any another config source implementations.)The meta-configuration for a config source can set the property
retry-policyusing the following nestedproperties:type- name of the retry policy implementation.Built-in Retry Policies Name Policy Properties repeatTries to load at regular intervals until the retry count reaches retries. SeeRetryPolicies.repeat(int), andRetryPolicies.Builderfor details on theproperties.class- fully qualified class name of custom retry policy implementation or a builder class that implements abuild()method that returns aRetryPolicy.
typeorclassto indicate a retry policy but not both. If both appear the config system ignores theclasssetting.See
ConfigSource.create(Config)for example of using built-in retry policies.Meta-configuration Support for Custom Retry Policies
To support settings in meta-configuration, a custom retry policy must follow this pattern.The implementation class should define a Java bean property for each meta-configuration property it needs to support. The config system uses mapping functions to convert the text in the meta-configuration into the correct Java type and then assigns the value to the correspondingly-named Java bean property defined on the custom policy instance. See the built-in mappers defined in
ConfigMappersto see what Java types are automatically supported.- Parameters:
metaConfig- meta-configuration used to initialize returned retry policy instance from.- Returns:
- new instance of retry policy described by
metaConfig - Throws:
MissingValueException- in case the configuration tree does not contain all expected sub-nodes required by the mapper implementation to provide instance of Java type.ConfigMappingException- in case the mapper fails to map the (existing) configuration tree represented by the supplied configuration node to an instance of a given Java type.- See Also:
ConfigSources.load(Supplier[]),ConfigSources.load(Config)
-
execute
<T> T execute(Supplier<T> call)
Invokes the providedSupplierto read the source data and returns that data.The implementation of this method incorporates the retry logic.
- Type Parameters:
T- result type- Parameters:
call- supplier ofT- Returns:
- loaded data returned by the provided
Supplier
-
cancel
default boolean cancel(boolean mayInterruptIfRunning)
Cancels the current use of the retry policy.Implementations should correctly handle three cases:
cancelinvoked when no invocation ofexecuteis in progress,cancelinvoked when an invocation ofexecuteis active but no attempted load is actually in progress (e.g., a prior attempt failed and the retry policy is waiting for some time to pass before trying again), andcancelinvoked while a load attempt is in progress.
- Parameters:
mayInterruptIfRunning- whether an in-progress load attempt should be interrupted- Returns:
falseif the task could not be canceled, typically because it has already completed;trueotherwise
-
get
default RetryPolicy get()
- Specified by:
getin interfaceSupplier<RetryPolicy>
-
-