All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.simpleworkflow.flow.annotations.ExponentialRetry Maven / Gradle / Ivy

Go to download

The Amazon Web Services SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. The AWS Java SDK allows developers to code against APIs for all of Amazon's infrastructure web services (Amazon S3, Amazon EC2, Amazon SQS, Amazon Relational Database Service, Amazon AutoScaling, etc).

The newest version!
/*
 * Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package com.amazonaws.services.simpleworkflow.flow.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.amazonaws.services.simpleworkflow.flow.common.FlowDefaults;
import com.amazonaws.services.simpleworkflow.flow.interceptors.RetryDecorator;

/**
 * This annotation can be used for retrying failures on any asynchronous executions.
 * 

* For retrying based on dynamic retry policy use {@link RetryDecorator}. * Both @ExponentialRetry annotation and {@link RetryDecorator} should not be * used simultaneously on the same asynchronous method call. *

* To allow retries for an individual activity, place the annotation on the desired * activity method in the corresponding @Activities interface. Since a new * activity instance is started per retry, any timeouts configured on the * @ActivityRegistrationOptions apply to each individual retry of the activity. *

* To allow retries for an entire workflow, place the annotation on the override * of the workflow's @Execute method in the @Workflow's implementation * (rather than on the interface). Since the same workflow instance is reused * for each retry, any timeouts configured on the @WorkflowRegistrationOptions * apply to the total time of the workflow over all retries. * * @author fateev, samar * */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface ExponentialRetry { /** * Interval to wait after the initial failure, before triggering a retry. *

* This value should not be greater than values specified for * maximumRetryPeriod or retryExpirationPeriod. */ long initialRetryIntervalSeconds(); /** * Maximum interval to wait between retry attempts. *

* This value should not be less than value specified for * initialRetryPeriod. Default value is unlimited. */ long maximumRetryIntervalSeconds() default FlowDefaults.EXPONENTIAL_RETRY_MAXIMUM_RETRY_INTERVAL_SECONDS; /** * Total duration across all attempts before giving up and attempting * no further retries. *

* This duration is measured relative to the initial attempt's starting time. * and *

* This value should not be less than value specified for * initialRetryPeriod. Default value is unlimited. */ long retryExpirationSeconds() default FlowDefaults.EXPONENTIAL_RETRY_RETRY_EXPIRATION_SECONDS; /** * Coefficient to use for exponential retry policy. *

* The retry interval will be multiplied by this coefficient after each * subsequent failure. Default is 2.0. */ double backoffCoefficient() default FlowDefaults.EXPONENTIAL_RETRY_BACKOFF_COEFFICIENT; /** * Number of maximum retry attempts (including the initial attempt). * Default value is no limit. */ int maximumAttempts() default FlowDefaults.EXPONENTIAL_RETRY_MAXIMUM_ATTEMPTS; /** * Default is {@link Throwable} which means that all exceptions are retried. */ Class[] exceptionsToRetry() default { Throwable.class }; /** * What exceptions that match exceptionsToRetry list should be not retried. * Default is empty list. */ Class[] excludeExceptions() default {}; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy