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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
}
}
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 } }
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: