com.amazonaws.services.sqs.AmazonSQSAsyncClient Maven / Gradle / Ivy
Show all versions of aws-java-sdk-osgi Show documentation
/*
 * Copyright 2010-2016 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.sqs;
import com.amazonaws.services.sqs.model.*;
import com.amazonaws.annotation.ThreadSafe;
/**
 * Interface for accessing Amazon SQS asynchronously. Each asynchronous method
 * will return a Java Future object representing the asynchronous operation;
 * overloads which accept an {@code AsyncHandler} can be used to receive
 * notification when an asynchronous operation completes.
 * 
 * 
 * Welcome to the Amazon Simple Queue Service API Reference. This section
 * describes who should read this guide, how the guide is organized, and other
 * resources related to the Amazon Simple Queue Service (Amazon SQS).
 * 
 * 
 * Amazon SQS offers reliable and scalable hosted queues for storing messages as
 * they travel between computers. By using Amazon SQS, you can move data between
 * distributed components of your applications that perform different tasks
 * without losing messages or requiring each component to be always available.
 * 
 * 
 * Helpful Links:
 * 
 * 
 * - 
 * 
 * 
 
 * - 
 * 
 * 
 
 * - 
 * 
 * 
 
 * - 
 * 
 * 
 
 * - 
 * 
 * 
 
 * - 
 * 
 * 
 
 * 
 * 
 * We also provide SDKs that enable you to access Amazon SQS from your preferred
 * programming language. The SDKs contain functionality that automatically takes
 * care of tasks such as:
 * 
 * 
 * - 
 * 
 * Cryptographically signing your service requests
 * 
 *  
 * - 
 * 
 * Retrying requests
 * 
 *  
 * - 
 * 
 * Handling error responses
 * 
 *  
 * 
 * 
 * For a list of available SDKs, go to Tools for Amazon Web Services.
 * 
 */
@ThreadSafe
public class AmazonSQSAsyncClient extends AmazonSQSClient implements
        AmazonSQSAsync {
    private static final int DEFAULT_THREAD_POOL_SIZE = 50;
    private final java.util.concurrent.ExecutorService executorService;
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS. A credentials provider chain will be used that searches for
     * credentials in this order:
     * 
     * - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
 
     * - Java System Properties - aws.accessKeyId and aws.secretKey
 
     * - Credential profiles file at the default location (~/.aws/credentials)
     * shared by all AWS SDKs and the AWS CLI
 
     * - Instance profile credentials delivered through the Amazon EC2
     * metadata service
 
     * 
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * 50 threads (to match the default maximum number of concurrent connections
     * to the service).
     *
     * @see com.amazonaws.auth.DefaultAWSCredentialsProviderChain
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonSQSAsyncClient() {
        this(new com.amazonaws.auth.DefaultAWSCredentialsProviderChain());
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS. A credentials provider chain will be used that searches for
     * credentials in this order:
     * 
     * - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
 
     * - Java System Properties - aws.accessKeyId and aws.secretKey
 
     * - Credential profiles file at the default location (~/.aws/credentials)
     * shared by all AWS SDKs and the AWS CLI
 
     * - Instance profile credentials delivered through the Amazon EC2
     * metadata service
 
     * 
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * a number of threads equal to the maximum number of concurrent connections
     * configured via {@code ClientConfiguration.getMaxConnections()}.
     *
     * @param clientConfiguration
     *        The client configuration options controlling how this client
     *        connects to Amazon SQS (ex: proxy settings, retry counts, etc).
     *
     * @see com.amazonaws.auth.DefaultAWSCredentialsProviderChain
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.ClientConfiguration clientConfiguration) {
        this(new com.amazonaws.auth.DefaultAWSCredentialsProviderChain(),
                clientConfiguration, java.util.concurrent.Executors
                        .newFixedThreadPool(clientConfiguration
                                .getMaxConnections()));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the specified AWS account credentials.
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * 50 threads (to match the default maximum number of concurrent connections
     * to the service).
     *
     * @param awsCredentials
     *        The AWS credentials (access key ID and secret key) to use when
     *        authenticating with AWS services.
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonSQSAsyncClient(com.amazonaws.auth.AWSCredentials awsCredentials) {
        this(awsCredentials, java.util.concurrent.Executors
                .newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the specified AWS account credentials and executor service.
     * Default client settings will be used.
     *
     * @param awsCredentials
     *        The AWS credentials (access key ID and secret key) to use when
     *        authenticating with AWS services.
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.auth.AWSCredentials awsCredentials,
            java.util.concurrent.ExecutorService executorService) {
        this(awsCredentials, configFactory.getConfig(), executorService);
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the specified AWS account credentials, executor service, and
     * client configuration options.
     *
     * @param awsCredentials
     *        The AWS credentials (access key ID and secret key) to use when
     *        authenticating with AWS services.
     * @param clientConfiguration
     *        Client configuration options (ex: max retry limit, proxy settings,
     *        etc).
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.auth.AWSCredentials awsCredentials,
            com.amazonaws.ClientConfiguration clientConfiguration,
            java.util.concurrent.ExecutorService executorService) {
        super(awsCredentials, clientConfiguration);
        this.executorService = executorService;
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the specified AWS account credentials provider. Default client
     * settings will be used.
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * 50 threads (to match the default maximum number of concurrent connections
     * to the service).
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider) {
        this(awsCredentialsProvider, java.util.concurrent.Executors
                .newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the provided AWS account credentials provider and client
     * configuration options.
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * a number of threads equal to the maximum number of concurrent connections
     * configured via {@code ClientConfiguration.getMaxConnections()}.
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @param clientConfiguration
     *        Client configuration options (ex: max retry limit, proxy settings,
     *        etc).
     *
     * @see com.amazonaws.auth.DefaultAWSCredentialsProviderChain
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider,
            com.amazonaws.ClientConfiguration clientConfiguration) {
        this(awsCredentialsProvider, clientConfiguration,
                java.util.concurrent.Executors
                        .newFixedThreadPool(clientConfiguration
                                .getMaxConnections()));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the specified AWS account credentials provider and executor
     * service. Default client settings will be used.
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider,
            java.util.concurrent.ExecutorService executorService) {
        this(awsCredentialsProvider, configFactory.getConfig(), executorService);
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * SQS using the specified AWS account credentials provider, executor
     * service, and client configuration options.
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @param clientConfiguration
     *        Client configuration options (ex: max retry limit, proxy settings,
     *        etc).
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonSQSAsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider,
            com.amazonaws.ClientConfiguration clientConfiguration,
            java.util.concurrent.ExecutorService executorService) {
        super(awsCredentialsProvider, clientConfiguration);
        this.executorService = executorService;
    }
    /**
     * Returns the executor service used by this client to execute async
     * requests.
     *
     * @return The executor service used by this client to execute async
     *         requests.
     */
    public java.util.concurrent.ExecutorService getExecutorService() {
        return executorService;
    }
    @Override
    public java.util.concurrent.Future addPermissionAsync(
            AddPermissionRequest request) {
        return addPermissionAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future addPermissionAsync(
            final AddPermissionRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AddPermissionResult call() throws Exception {
                        AddPermissionResult result;
                        try {
                            result = addPermission(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the AddPermission operation.
     *
     * @see #addPermissionAsync(AddPermissionRequest)
     */
    @Override
    public java.util.concurrent.Future addPermissionAsync(
            String queueUrl, String label,
            java.util.List aWSAccountIds, java.util.List actions) {
        return addPermissionAsync(new AddPermissionRequest()
                .withQueueUrl(queueUrl).withLabel(label)
                .withAWSAccountIds(aWSAccountIds).withActions(actions));
    }
    /**
     * Simplified method form for invoking the AddPermission operation with an
     * AsyncHandler.
     *
     * @see #addPermissionAsync(AddPermissionRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future addPermissionAsync(
            String queueUrl,
            String label,
            java.util.List aWSAccountIds,
            java.util.List actions,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return addPermissionAsync(
                new AddPermissionRequest().withQueueUrl(queueUrl)
                        .withLabel(label).withAWSAccountIds(aWSAccountIds)
                        .withActions(actions), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future changeMessageVisibilityAsync(
            ChangeMessageVisibilityRequest request) {
        return changeMessageVisibilityAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future changeMessageVisibilityAsync(
            final ChangeMessageVisibilityRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public ChangeMessageVisibilityResult call()
                            throws Exception {
                        ChangeMessageVisibilityResult result;
                        try {
                            result = changeMessageVisibility(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the ChangeMessageVisibility
     * operation.
     *
     * @see #changeMessageVisibilityAsync(ChangeMessageVisibilityRequest)
     */
    @Override
    public java.util.concurrent.Future changeMessageVisibilityAsync(
            String queueUrl, String receiptHandle, Integer visibilityTimeout) {
        return changeMessageVisibilityAsync(new ChangeMessageVisibilityRequest()
                .withQueueUrl(queueUrl).withReceiptHandle(receiptHandle)
                .withVisibilityTimeout(visibilityTimeout));
    }
    /**
     * Simplified method form for invoking the ChangeMessageVisibility operation
     * with an AsyncHandler.
     *
     * @see #changeMessageVisibilityAsync(ChangeMessageVisibilityRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future changeMessageVisibilityAsync(
            String queueUrl,
            String receiptHandle,
            Integer visibilityTimeout,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return changeMessageVisibilityAsync(
                new ChangeMessageVisibilityRequest().withQueueUrl(queueUrl)
                        .withReceiptHandle(receiptHandle)
                        .withVisibilityTimeout(visibilityTimeout), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future changeMessageVisibilityBatchAsync(
            ChangeMessageVisibilityBatchRequest request) {
        return changeMessageVisibilityBatchAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future changeMessageVisibilityBatchAsync(
            final ChangeMessageVisibilityBatchRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public ChangeMessageVisibilityBatchResult call()
                            throws Exception {
                        ChangeMessageVisibilityBatchResult result;
                        try {
                            result = changeMessageVisibilityBatch(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the ChangeMessageVisibilityBatch
     * operation.
     *
     * @see #changeMessageVisibilityBatchAsync(ChangeMessageVisibilityBatchRequest)
     */
    @Override
    public java.util.concurrent.Future changeMessageVisibilityBatchAsync(
            String queueUrl,
            java.util.List entries) {
        return changeMessageVisibilityBatchAsync(new ChangeMessageVisibilityBatchRequest()
                .withQueueUrl(queueUrl).withEntries(entries));
    }
    /**
     * Simplified method form for invoking the ChangeMessageVisibilityBatch
     * operation with an AsyncHandler.
     *
     * @see #changeMessageVisibilityBatchAsync(ChangeMessageVisibilityBatchRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future changeMessageVisibilityBatchAsync(
            String queueUrl,
            java.util.List entries,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return changeMessageVisibilityBatchAsync(
                new ChangeMessageVisibilityBatchRequest()
                        .withQueueUrl(queueUrl).withEntries(entries),
                asyncHandler);
    }
    @Override
    public java.util.concurrent.Future createQueueAsync(
            CreateQueueRequest request) {
        return createQueueAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createQueueAsync(
            final CreateQueueRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateQueueResult call() throws Exception {
                        CreateQueueResult result;
                        try {
                            result = createQueue(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the CreateQueue operation.
     *
     * @see #createQueueAsync(CreateQueueRequest)
     */
    @Override
    public java.util.concurrent.Future createQueueAsync(
            String queueName) {
        return createQueueAsync(new CreateQueueRequest()
                .withQueueName(queueName));
    }
    /**
     * Simplified method form for invoking the CreateQueue operation with an
     * AsyncHandler.
     *
     * @see #createQueueAsync(CreateQueueRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future createQueueAsync(
            String queueName,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return createQueueAsync(
                new CreateQueueRequest().withQueueName(queueName), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future deleteMessageAsync(
            DeleteMessageRequest request) {
        return deleteMessageAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteMessageAsync(
            final DeleteMessageRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteMessageResult call() throws Exception {
                        DeleteMessageResult result;
                        try {
                            result = deleteMessage(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the DeleteMessage operation.
     *
     * @see #deleteMessageAsync(DeleteMessageRequest)
     */
    @Override
    public java.util.concurrent.Future deleteMessageAsync(
            String queueUrl, String receiptHandle) {
        return deleteMessageAsync(new DeleteMessageRequest().withQueueUrl(
                queueUrl).withReceiptHandle(receiptHandle));
    }
    /**
     * Simplified method form for invoking the DeleteMessage operation with an
     * AsyncHandler.
     *
     * @see #deleteMessageAsync(DeleteMessageRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future deleteMessageAsync(
            String queueUrl,
            String receiptHandle,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return deleteMessageAsync(
                new DeleteMessageRequest().withQueueUrl(queueUrl)
                        .withReceiptHandle(receiptHandle), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future deleteMessageBatchAsync(
            DeleteMessageBatchRequest request) {
        return deleteMessageBatchAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteMessageBatchAsync(
            final DeleteMessageBatchRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteMessageBatchResult call() throws Exception {
                        DeleteMessageBatchResult result;
                        try {
                            result = deleteMessageBatch(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the DeleteMessageBatch operation.
     *
     * @see #deleteMessageBatchAsync(DeleteMessageBatchRequest)
     */
    @Override
    public java.util.concurrent.Future deleteMessageBatchAsync(
            String queueUrl,
            java.util.List entries) {
        return deleteMessageBatchAsync(new DeleteMessageBatchRequest()
                .withQueueUrl(queueUrl).withEntries(entries));
    }
    /**
     * Simplified method form for invoking the DeleteMessageBatch operation with
     * an AsyncHandler.
     *
     * @see #deleteMessageBatchAsync(DeleteMessageBatchRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future deleteMessageBatchAsync(
            String queueUrl,
            java.util.List entries,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return deleteMessageBatchAsync(new DeleteMessageBatchRequest()
                .withQueueUrl(queueUrl).withEntries(entries), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future deleteQueueAsync(
            DeleteQueueRequest request) {
        return deleteQueueAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteQueueAsync(
            final DeleteQueueRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteQueueResult call() throws Exception {
                        DeleteQueueResult result;
                        try {
                            result = deleteQueue(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the DeleteQueue operation.
     *
     * @see #deleteQueueAsync(DeleteQueueRequest)
     */
    @Override
    public java.util.concurrent.Future deleteQueueAsync(
            String queueUrl) {
        return deleteQueueAsync(new DeleteQueueRequest().withQueueUrl(queueUrl));
    }
    /**
     * Simplified method form for invoking the DeleteQueue operation with an
     * AsyncHandler.
     *
     * @see #deleteQueueAsync(DeleteQueueRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future deleteQueueAsync(
            String queueUrl,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return deleteQueueAsync(
                new DeleteQueueRequest().withQueueUrl(queueUrl), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future getQueueAttributesAsync(
            GetQueueAttributesRequest request) {
        return getQueueAttributesAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future getQueueAttributesAsync(
            final GetQueueAttributesRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public GetQueueAttributesResult call() throws Exception {
                        GetQueueAttributesResult result;
                        try {
                            result = getQueueAttributes(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the GetQueueAttributes operation.
     *
     * @see #getQueueAttributesAsync(GetQueueAttributesRequest)
     */
    @Override
    public java.util.concurrent.Future getQueueAttributesAsync(
            String queueUrl, java.util.List attributeNames) {
        return getQueueAttributesAsync(new GetQueueAttributesRequest()
                .withQueueUrl(queueUrl).withAttributeNames(attributeNames));
    }
    /**
     * Simplified method form for invoking the GetQueueAttributes operation with
     * an AsyncHandler.
     *
     * @see #getQueueAttributesAsync(GetQueueAttributesRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future getQueueAttributesAsync(
            String queueUrl,
            java.util.List attributeNames,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return getQueueAttributesAsync(new GetQueueAttributesRequest()
                .withQueueUrl(queueUrl).withAttributeNames(attributeNames),
                asyncHandler);
    }
    @Override
    public java.util.concurrent.Future getQueueUrlAsync(
            GetQueueUrlRequest request) {
        return getQueueUrlAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future getQueueUrlAsync(
            final GetQueueUrlRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public GetQueueUrlResult call() throws Exception {
                        GetQueueUrlResult result;
                        try {
                            result = getQueueUrl(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the GetQueueUrl operation.
     *
     * @see #getQueueUrlAsync(GetQueueUrlRequest)
     */
    @Override
    public java.util.concurrent.Future getQueueUrlAsync(
            String queueName) {
        return getQueueUrlAsync(new GetQueueUrlRequest()
                .withQueueName(queueName));
    }
    /**
     * Simplified method form for invoking the GetQueueUrl operation with an
     * AsyncHandler.
     *
     * @see #getQueueUrlAsync(GetQueueUrlRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future getQueueUrlAsync(
            String queueName,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return getQueueUrlAsync(
                new GetQueueUrlRequest().withQueueName(queueName), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future listDeadLetterSourceQueuesAsync(
            ListDeadLetterSourceQueuesRequest request) {
        return listDeadLetterSourceQueuesAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future listDeadLetterSourceQueuesAsync(
            final ListDeadLetterSourceQueuesRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public ListDeadLetterSourceQueuesResult call()
                            throws Exception {
                        ListDeadLetterSourceQueuesResult result;
                        try {
                            result = listDeadLetterSourceQueues(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future listQueuesAsync(
            ListQueuesRequest request) {
        return listQueuesAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future listQueuesAsync(
            final ListQueuesRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public ListQueuesResult call() throws Exception {
                        ListQueuesResult result;
                        try {
                            result = listQueues(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the ListQueues operation.
     *
     * @see #listQueuesAsync(ListQueuesRequest)
     */
    @Override
    public java.util.concurrent.Future listQueuesAsync() {
        return listQueuesAsync(new ListQueuesRequest());
    }
    /**
     * Simplified method form for invoking the ListQueues operation with an
     * AsyncHandler.
     *
     * @see #listQueuesAsync(ListQueuesRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future listQueuesAsync(
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return listQueuesAsync(new ListQueuesRequest(), asyncHandler);
    }
    /**
     * Simplified method form for invoking the ListQueues operation.
     *
     * @see #listQueuesAsync(ListQueuesRequest)
     */
    @Override
    public java.util.concurrent.Future listQueuesAsync(
            String queueNamePrefix) {
        return listQueuesAsync(new ListQueuesRequest()
                .withQueueNamePrefix(queueNamePrefix));
    }
    /**
     * Simplified method form for invoking the ListQueues operation with an
     * AsyncHandler.
     *
     * @see #listQueuesAsync(ListQueuesRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future listQueuesAsync(
            String queueNamePrefix,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return listQueuesAsync(
                new ListQueuesRequest().withQueueNamePrefix(queueNamePrefix),
                asyncHandler);
    }
    @Override
    public java.util.concurrent.Future purgeQueueAsync(
            PurgeQueueRequest request) {
        return purgeQueueAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future purgeQueueAsync(
            final PurgeQueueRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public PurgeQueueResult call() throws Exception {
                        PurgeQueueResult result;
                        try {
                            result = purgeQueue(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future receiveMessageAsync(
            ReceiveMessageRequest request) {
        return receiveMessageAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future receiveMessageAsync(
            final ReceiveMessageRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public ReceiveMessageResult call() throws Exception {
                        ReceiveMessageResult result;
                        try {
                            result = receiveMessage(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the ReceiveMessage operation.
     *
     * @see #receiveMessageAsync(ReceiveMessageRequest)
     */
    @Override
    public java.util.concurrent.Future receiveMessageAsync(
            String queueUrl) {
        return receiveMessageAsync(new ReceiveMessageRequest()
                .withQueueUrl(queueUrl));
    }
    /**
     * Simplified method form for invoking the ReceiveMessage operation with an
     * AsyncHandler.
     *
     * @see #receiveMessageAsync(ReceiveMessageRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future receiveMessageAsync(
            String queueUrl,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return receiveMessageAsync(
                new ReceiveMessageRequest().withQueueUrl(queueUrl),
                asyncHandler);
    }
    @Override
    public java.util.concurrent.Future removePermissionAsync(
            RemovePermissionRequest request) {
        return removePermissionAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future removePermissionAsync(
            final RemovePermissionRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public RemovePermissionResult call() throws Exception {
                        RemovePermissionResult result;
                        try {
                            result = removePermission(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the RemovePermission operation.
     *
     * @see #removePermissionAsync(RemovePermissionRequest)
     */
    @Override
    public java.util.concurrent.Future removePermissionAsync(
            String queueUrl, String label) {
        return removePermissionAsync(new RemovePermissionRequest()
                .withQueueUrl(queueUrl).withLabel(label));
    }
    /**
     * Simplified method form for invoking the RemovePermission operation with
     * an AsyncHandler.
     *
     * @see #removePermissionAsync(RemovePermissionRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future removePermissionAsync(
            String queueUrl,
            String label,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return removePermissionAsync(new RemovePermissionRequest()
                .withQueueUrl(queueUrl).withLabel(label), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future sendMessageAsync(
            SendMessageRequest request) {
        return sendMessageAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future sendMessageAsync(
            final SendMessageRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public SendMessageResult call() throws Exception {
                        SendMessageResult result;
                        try {
                            result = sendMessage(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the SendMessage operation.
     *
     * @see #sendMessageAsync(SendMessageRequest)
     */
    @Override
    public java.util.concurrent.Future sendMessageAsync(
            String queueUrl, String messageBody) {
        return sendMessageAsync(new SendMessageRequest().withQueueUrl(queueUrl)
                .withMessageBody(messageBody));
    }
    /**
     * Simplified method form for invoking the SendMessage operation with an
     * AsyncHandler.
     *
     * @see #sendMessageAsync(SendMessageRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future sendMessageAsync(
            String queueUrl,
            String messageBody,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return sendMessageAsync(new SendMessageRequest().withQueueUrl(queueUrl)
                .withMessageBody(messageBody), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future sendMessageBatchAsync(
            SendMessageBatchRequest request) {
        return sendMessageBatchAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future sendMessageBatchAsync(
            final SendMessageBatchRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public SendMessageBatchResult call() throws Exception {
                        SendMessageBatchResult result;
                        try {
                            result = sendMessageBatch(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the SendMessageBatch operation.
     *
     * @see #sendMessageBatchAsync(SendMessageBatchRequest)
     */
    @Override
    public java.util.concurrent.Future sendMessageBatchAsync(
            String queueUrl,
            java.util.List entries) {
        return sendMessageBatchAsync(new SendMessageBatchRequest()
                .withQueueUrl(queueUrl).withEntries(entries));
    }
    /**
     * Simplified method form for invoking the SendMessageBatch operation with
     * an AsyncHandler.
     *
     * @see #sendMessageBatchAsync(SendMessageBatchRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future sendMessageBatchAsync(
            String queueUrl,
            java.util.List entries,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return sendMessageBatchAsync(new SendMessageBatchRequest()
                .withQueueUrl(queueUrl).withEntries(entries), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future setQueueAttributesAsync(
            SetQueueAttributesRequest request) {
        return setQueueAttributesAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future setQueueAttributesAsync(
            final SetQueueAttributesRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public SetQueueAttributesResult call() throws Exception {
                        SetQueueAttributesResult result;
                        try {
                            result = setQueueAttributes(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the SetQueueAttributes operation.
     *
     * @see #setQueueAttributesAsync(SetQueueAttributesRequest)
     */
    @Override
    public java.util.concurrent.Future setQueueAttributesAsync(
            String queueUrl, java.util.Map attributes) {
        return setQueueAttributesAsync(new SetQueueAttributesRequest()
                .withQueueUrl(queueUrl).withAttributes(attributes));
    }
    /**
     * Simplified method form for invoking the SetQueueAttributes operation with
     * an AsyncHandler.
     *
     * @see #setQueueAttributesAsync(SetQueueAttributesRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future setQueueAttributesAsync(
            String queueUrl,
            java.util.Map attributes,
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return setQueueAttributesAsync(new SetQueueAttributesRequest()
                .withQueueUrl(queueUrl).withAttributes(attributes),
                asyncHandler);
    }
    /**
     * Shuts down the client, releasing all managed resources. This includes
     * forcibly terminating all pending asynchronous service calls. Clients who
     * wish to give pending asynchronous service calls time to complete should
     * call {@code getExecutorService().shutdown()} followed by
     * {@code getExecutorService().awaitTermination()} prior to calling this
     * method.
     */
    @Override
    public void shutdown() {
        super.shutdown();
        executorService.shutdownNow();
    }
}