Must read

Retries

Example in Java

The following example is not meant to be complete, its goal is to give you a good idea of how to configure your AWS clients.

import com.amazonaws.ClientConfiguration;
import com.amazonaws.retry.PredefinedBackoffStrategies.SDKDefaultBackoffStrategy;
import com.amazonaws.retry.PredefinedRetryPolicies;
import com.amazonaws.retry.RetryPolicy;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;

public class Main {
    private static ClientConfiguration getClientConfiguration() {
        // Retry Wait time (ms)
        // 0 0
        // 1 1,000
        // 2 2,000
        // 3 4,000
        // 4 8,000
        // 5 16,000
        final int baseDelay = 500;
        final int throttledBaseDelay = 1_000;
        final int maxBackoff = 16_000;
        final int maxErrorRetry = 5;

        SDKDefaultBackoffStrategy backoffStrategy = new SDKDefaultBackoffStrategy(baseDelay, throttledBaseDelay, maxBackoff);
        final RetryPolicy retryPolicy = new RetryPolicy(
                PredefinedRetryPolicies.DEFAULT_RETRY_CONDITION,
                backoffStrategy,
                maxErrorRetry,
                true
        );

        // Passing the default values (just being explicit) 
        return new ClientConfiguration()
                .withSocketTimeout(ClientConfiguration.DEFAULT_SOCKET_TIMEOUT)
                .withConnectionTimeout(ClientConfiguration.DEFAULT_CONNECTION_TIMEOUT)
                .withMaxConnections(ClientConfiguration.DEFAULT_MAX_CONNECTIONS)
                .withRetryPolicy(retryPolicy);
    }
    
    public static void main(String[] args) {
        AmazonSQS client = AmazonSQSClientBuilder.standard()
                .withClientConfiguration(getClientConfiguration())
                .withRegion("us-east-1")
                .build();
        // Use the client
    }
}


Posted

in

,

by

Tags: