

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Trabajar con de Amazon Simple Queue Service
<a name="examples-sqs"></a>

En esta sección se proporcionan ejemplos de programación [Amazon Simple Queue Service](https://docs.aws.amazon.com/sqs/) mediante AWS SDK para Java 2.x.

Los siguientes ejemplos incluyen únicamente el código necesario para demostrar cada técnica. El [código de ejemplo completo está disponible en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2). Desde allí, puede descargar un único archivo de código fuente o clonar el repositorio localmente para obtener todos los ejemplos para compilarlos y ejecutarlos.

**Topics**
+ [Uso de procesamiento automático de solicitudes por lotes](sqs-auto-batch.md)
+ [Operaciones de cola](examples-sqs-message-queues.md)
+ [Operaciones con mensajes](examples-sqs-messages.md)

# Utilice el procesamiento automático por lotes de solicitudes para Amazon SQS con AWS SDK for Java 2.x
<a name="sqs-auto-batch"></a>

La API Procesamiento automático de solicitudes por lotes para Amazon SQS es una biblioteca de alto nivel que proporciona una forma eficaz de procesar por lotes y almacenar en búfer las solicitudes de operaciones de SQS. Al utilizar la API de procesamiento por lotes, reduce el número de solicitudes a SQS, lo que mejora el rendimiento y minimiza los costos. 

Dado que los métodos de la API por lotes coinciden con los métodos de `[SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)` (`sendMessage`, `changeMessageVisibility`, `deleteMessage`, `receiveMessage`), puede utilizar la API por lotes como sustitución directa con cambios mínimos. 

En este tema se ofrece información general sobre cómo configurar y trabajar con la API Procesamiento automático de solicitudes por lotes para Amazon SQS.

## Requisitos previos
<a name="sqs-auto-batch-requirements"></a>

Debe usar la versión *2.28.0* o posterior del SDK para Java 2.x para tener acceso a la API de procesamiento por lotes. Su `pom.xml` de Maven debe contener al menos los siguientes elementos.

```
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.28.231</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>sqs</artifactId>
    </dependency>
</dependencies>
```

1 [Última versión](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)

## Creación de un administrador de lotes
<a name="sqs-auto-batch-create"></a>

La [SqsAsyncBatchManager](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html)interfaz implementa la API automática de procesamiento por lotes de solicitudes. Puede crear una instancia del administrador de dos formas.

### Configuración predeterminada mediante `SqsAsyncClient`
<a name="sqs-batch-manager-create-default"></a>

La forma más sencilla de crear un administrador de lotes es llamar al método de `batchManager` fábrica en una [SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)instancia existente. Este método se muestra en el fragmento de código siguiente. 

```
SqsAsyncClient asyncClient = SqsAsyncClient.create();
SqsAsyncBatchManager sqsAsyncBatchManager = asyncClient.batchManager();
```

Al usar este método, la instancia `SqsAsyncBatchManager` usa los valores predeterminados que se muestran en la tabla de la sección [Anulación de los ajustes de configuración de `SqsAsyncBatchManager`](#sqs-auto-batch-config-settings). Además, la instancia `SqsAsyncBatchManager` usa el `ExecutorService` de la instancia de `SqsAsyncClient` desde la que se creó.

### Configuración personalizada mediante `SqsAsyncBatchManager.Builder`
<a name="sqs-batch-manager-create-custom"></a>

Para casos de uso más avanzados, puede personalizar el administrador de lotes mediante [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.Builder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.Builder.html). Si usa este método para crear una instancia de `SqsAsyncBatchManager`, puede afinar el comportamiento del procesamiento por lotes. El siguiente fragmento de código ofrece un ejemplo de cómo utilizar el compilador para personalizar el comportamiento de procesamiento por lotes.

```
SqsAsyncBatchManager batchManager = SqsAsyncBatchManager.builder()
    .client(SqsAsyncClient.create())
    .scheduledExecutor(Executors.newScheduledThreadPool(5))
    .overrideConfiguration(b -> b
        .receiveMessageMinWaitDuration(Duration.ofSeconds(10))
        .receiveMessageVisibilityTimeout(Duration.ofSeconds(1))
        .receiveMessageAttributeNames(Collections.singletonList("*"))
        .receiveMessageSystemAttributeNames(Collections.singletonList(MessageSystemAttributeName.ALL)))
    .build();
```

Si utiliza este método, puede ajustar la configuración del objeto `BatchOverrideConfiguration` que se muestra en la tabla de la sección [Anulación de los ajustes de configuración de `SqsAsyncBatchManager`](#sqs-auto-batch-config-settings). También puede proporcionar un [https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html) personalizado para el administrador de lotes mediante este método.

## Envío de mensajes
<a name="sqs-auto-batch-send"></a>

Para enviar mensajes con el administrador de lotes, utilice el método `[SqsAsyncBatchManager\$1sendMessage](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#sendMessage(software.amazon.awssdk.services.sqs.model.SendMessageRequest))`. El SDK almacena en búfer las solicitudes y las envía como un lote cuando se alcanzan los valores `maxBatchSize` o `sendRequestFrequency`.

En el siguiente ejemplo, se muestra una solicitud `sendMessage` seguida inmediatamente de otra solicitud. En este caso, el SDK envía ambos mensajes en un único lote.

```
// Sending the first message
CompletableFuture<SendMessageResponse> futureOne = 
    sqsAsyncBatchManager.sendMessage(r -> r.messageBody("One").queueUrl("queue"));

// Sending the second message
CompletableFuture<SendMessageResponse> futureTwo = 
    sqsAsyncBatchManager.sendMessage(r -> r.messageBody("Two").queueUrl("queue"));

// Waiting for both futures to complete and retrieving the responses
SendMessageResponse messageOne = futureOne.join();
SendMessageResponse messageTwo = futureTwo.join();
```

## Cambio del tiempo de espera de visibilidad de mensajes
<a name="sqs-auto-batch-change-vis"></a>

Puede cambiar el tiempo de espera de visibilidad de los mensajes de un lote utilizando el método [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#changeMessageVisibility(java.util.function.Consumer)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#changeMessageVisibility(java.util.function.Consumer)). El SDK almacena en búfer las solicitudes y las envía como un lote cuando se alcanzan los valores `maxBatchSize` o `sendRequestFrequency`.

En el siguiente ejemplo, se muestra cómo llamar al método `changeMessageVisibility`.

```
CompletableFuture<ChangeMessageVisibilityResponse> futureOne =
    sqsAsyncBatchManager.changeMessageVisibility(r -> 
        r.receiptHandle("receiptHandle")
         .queueUrl("queue"));
ChangeMessageVisibilityResponse response = futureOne.join();
```

## Cómo eliminar mensajes
<a name="sqs-auto-batch-delete"></a>

Puede eliminar los mensajes de un lote con el método [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#deleteMessage(java.util.function.Consumer)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#deleteMessage(java.util.function.Consumer)). El SDK almacena en búfer las solicitudes y las envía como un lote cuando se alcanzan los valores `maxBatchSize` o `sendRequestFrequency`.

En el siguiente ejemplo se muestra cómo llamar al método `deleteMessage`.

```
CompletableFuture<DeleteMessageResponse> futureOne = 
    sqsAsyncBatchManager.deleteMessage(r -> 
        r.receiptHandle("receiptHandle")
         .queueUrl("queue"));
DeleteMessageResponse response = futureOne.join();
```

## Recepción de mensajes
<a name="sqs-auto-batch-receive"></a>

### Uso de la configuración predeterminada
<a name="sqs-auto-batch-receive-default-settings"></a>

Al sondear el método `[SqsAsyncBatchManager\$1receiveMessage](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#receiveMessage(java.util.function.Consumer))` en la aplicación, el administrador de lotes extrae los mensajes de su búfer interno, que el SDK actualiza automáticamente en segundo plano.

En el siguiente ejemplo, se muestra cómo llamar al método `receiveMessage`.

```
CompletableFuture<ReceiveMessageResponse> responseFuture = 
    sqsAsyncBatchManager.receiveMessage(r -> r.queueUrl("queueUrl"));
```

### Uso de la configuración personalizada
<a name="sqs-auto-batch-receive-custom-settings"></a>

Si quiere personalizar aún más la solicitud, por ejemplo, configurando tiempos de espera personalizados y especificando el número de mensajes que se van a recuperar, puede personalizar la solicitud como se muestra en el siguiente ejemplo.

```
CompletableFuture<ReceiveMessageResponse> response = 
    sqsAsyncBatchManager.receiveMessage(r -> 
        r.queueUrl("queueUrl")
         .waitTimeSeconds(5)
         .visibilityTimeout(20));
```

**nota**  
Si llama a `receiveMessage` con un parámetro `[ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)` que incluya alguno de los siguientes parámetros, el SDK omite el administrador de lotes y envía una solicitud asincrónica `receiveMessage` normal:  
`messageAttributeNames`
`messageSystemAttributeNames`
`messageSystemAttributeNamesWithStrings`
`overrideConfiguration`

## Anulación de los ajustes de configuración de `SqsAsyncBatchManager`
<a name="sqs-auto-batch-config-settings"></a>

Puede ajustar la configuración siguiente al crear una instancia `SqsAsyncBatchManager`. La siguiente lista de ajustes está disponible en [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/BatchOverrideConfiguration.Builder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/BatchOverrideConfiguration.Builder.html).


| Opción | Description (Descripción) | Predeterminado | 
| --- | --- | --- | 
| maxBatchSize | Número máximo de solicitudes por lote para cada SendMessageBatchRequest, ChangeMessageVisibilityBatchRequest o DeleteMessageBatchRequest. El valor máximo es 10. | 10 | 
| sendRequestFrequency |  Tiempo antes de enviar un lote, a menos que se alcance antes `maxBatchSize`. Los valores más altos pueden reducir las solicitudes pero aumentar la latencia.  | 200 ms | 
| receiveMessageVisibilityTimeout | Tiempo de espera de visibilidad para los mensajes. Si no se especifica, se utiliza la configuración predeterminada de la cola. | Configuración predeterminada de la cola | 
| receiveMessageMinWaitDuration | Tiempo mínimo de espera para solicitudes receiveMessage. Evite establecer el valor en 0 para evitar un uso excesivo de la CPU. | 50 ms | 
| receiveMessageSystemAttributeNames | Lista de [nombres de atributos del sistema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/MessageSystemAttributeName.html) para solicitar para llamadas receiveMessage. | Ninguno | 
| receiveMessageAttributeNames | Lista de [nombres de atributos](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes) para solicitar para llamadas receiveMessage. | Ninguno | 

# Trabaje con colas de Amazon Simple Queue Service mensajes
<a name="examples-sqs-message-queues"></a>

Una *cola de mensajes* es el contenedor lógico que se utiliza para enviar mensajes de forma fiable. Amazon Simple Queue Service Existen dos tipos de colas: *estándar* y *primero en entrar, primero en salir* (FIFO). Para obtener más información sobre las colas y las diferencias entre estos tipos, consulte la [Guía para desarrolladores de Amazon Simple Queue Service](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html).

En este tema se describe cómo crear, enumerar, eliminar y obtener la URL de una Amazon Simple Queue Service cola mediante el. AWS SDK para Java

La variable `sqsClient` que se utiliza en los ejemplos a continuación se puede crear a partir del siguiente fragmento.

```
SqsClient sqsClient = SqsClient.create();
```

Al crear un `SqsClient` utilizando el método `create()` estático, el SDK configura la región mediante la [cadena de proveedores de regiones predeterminada](region-selection.md#default-region-provider-chain) y las credenciales mediante la [cadena de proveedores de credenciales predeterminada](credentials-chain.md).

## Creación de una cola
<a name="sqs-create-queue"></a>

Use el `createQueue` método de `SqsClient’s` y proporcione un objeto `[CreateQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/CreateQueueRequest.html)` que describa los parámetros de la cola, como se muestra en el siguiente fragmento de código.

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
            CreateQueueRequest createQueueRequest = CreateQueueRequest.builder()
                .queueName(queueName)
                .build();

            sqsClient.createQueue(createQueueRequest);
```

Consulte el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L52) en. GitHub

## Lista de colas
<a name="sqs-list-queues"></a>

Para ver las Amazon Simple Queue Service colas de tu cuenta, llama al `SqsClient’s` `listQueues` método con un `[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` objeto.

Si utiliza la forma del método [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#listQueues()](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#listQueues()) que no acepta parámetros, el servicio devuelve *todas las colas* hasta un máximo de 1000. 

Puede proporcionar un prefijo de nombre de cola al objeto `[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` para limitar los resultados a las colas que coinciden con ese prefijo, como se muestra en el código siguiente.

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
        String prefix = "que";

        try {
            ListQueuesRequest listQueuesRequest = ListQueuesRequest.builder().queueNamePrefix(prefix).build();
            ListQueuesResponse listQueuesResponse = sqsClient.listQueues(listQueuesRequest);

            for (String url : listQueuesResponse.queueUrls()) {
                System.out.println(url);
            }

        } catch (SqsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
```

Consulta el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L79) en. GitHub

## Obtener la URL de una cola
<a name="sqs-get-queue-url"></a>

El código siguiente muestra cómo obtener la URL de una cola llamando al `getQueueUrl` método de `SqsClient’s` con un objeto `[GetQueueUrlRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/GetQueueUrlRequest.html)`.

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
            GetQueueUrlResponse getQueueUrlResponse =
                sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build());
            String queueUrl = getQueueUrlResponse.queueUrl();
            return queueUrl;
```

Vea el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/7486a1a092aa8e16a21698ef26f9d524fef62e55/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L70) en GitHub.

## Eliminar una cola
<a name="sqs-delete-queue"></a>

Proporcione la [URL](#sqs-get-queue-url) de la cola al objeto `[DeleteQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/DeleteQueueRequest.html)`. A continuación, llame al método `deleteQueue` de `SqsClient’s` para eliminar una cola, como se muestra en el código siguiente.

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
    public static void deleteSQSQueue(SqsClient sqsClient, String queueName) {

        try {

            GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder()
                    .queueName(queueName)
                    .build();

            String queueUrl = sqsClient.getQueueUrl(getQueueRequest).queueUrl();

            DeleteQueueRequest deleteQueueRequest = DeleteQueueRequest.builder()
                    .queueUrl(queueUrl)
                    .build();

            sqsClient.deleteQueue(deleteQueueRequest);

        } catch (SqsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Vea el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/6240df86c5f17eae1e23d1139d1435c7dc4b2a11/javav2/example_code/sqs/src/main/java/com/example/sqs/DeleteQueue.java#L48) en GitHub.

## Más información
<a name="more-information"></a>
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)en la referencia Amazon Simple Queue Service de la API
+  [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)en la referencia Amazon Simple Queue Service de la API
+  [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)en la referencia Amazon Simple Queue Service de la API
+  [DeleteQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueue.html)en la referencia Amazon Simple Queue Service de la API

# Enviar, recibir y eliminar Amazon Simple Queue Service mensajes
<a name="examples-sqs-messages"></a>

Un mensaje es un segmento de datos que los componentes distribuidos pueden enviar y recibir. Los mensajes se envían siempre a través de una [cola de SQS](examples-sqs-message-queues.md).

La variable `sqsClient` que se utiliza en los ejemplos a continuación se puede crear a partir del siguiente fragmento.

```
SqsClient sqsClient = SqsClient.create();
```

Al crear un `SqsClient` utilizando el método `create()` estático, el SDK configura la región mediante la [cadena de proveedores de regiones predeterminada](region-selection.md#default-region-provider-chain) y las credenciales mediante la [cadena de proveedores de credenciales predeterminada](credentials-chain.md).

## Enviar un mensaje
<a name="sqs-message-send"></a>

Agrega un solo mensaje a una Amazon Simple Queue Service cola llamando al `sendMessage` método SqsClient cliente. Proporcione un [SendMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageRequest.html)objeto que contenga la [URL](examples-sqs-message-queues.md#sqs-get-queue-url) de la cola, el cuerpo del mensaje y el valor de retraso opcional (en segundos).

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
            sqsClient.sendMessage(SendMessageRequest.builder()
                .queueUrl(queueUrl)
                .messageBody("Hello world!")
                .delaySeconds(10)
                .build());

            sqsClient.sendMessage(sendMsgRequest);
```

## Enviar varios mensajes en una solicitud
<a name="sqs-messages-send-multiple"></a>

Envíe varios mensajes en una sola solicitud mediante el método SqsClient `sendMessageBatch`. Este método toma una [SendMessageBatchRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequest.html)que contiene la URL de la cola y una lista de los mensajes que se van a enviar. (Cada mensaje es un [SendMessageBatchRequestEntry](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequestEntry.html).) También puede retrasar el envío de un mensaje específico estableciendo un valor de retraso en el mensaje.

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
            SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder()
                .queueUrl(queueUrl)
                .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(),
                        SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build())
                .build();
            sqsClient.sendMessageBatch(sendMessageBatchRequest);
```

Vea el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L133) en GitHub.

## Recuperar mensajes
<a name="sqs-messages-receive"></a>

Recupere todos los mensajes que se encuentran actualmente en la cola llamando al método SqsClient `receiveMessage`. Este método toma una [ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)que contiene la URL de la cola. También puede especificar el número máximo de mensajes que se devuelven. Los mensajes se devuelven como una lista de objetos [Message](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/Message.html).

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
        try {
            ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder()
                .queueUrl(queueUrl)
                .maxNumberOfMessages(5)
                .build();
            List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages();
            return messages;
        } catch (SqsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
```

Consulte el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L148) en. GitHub

## Eliminar un mensaje después de su recepción
<a name="sqs-messages-delete"></a>

Tras recibir un mensaje y procesar su contenido, elimine el mensaje de la cola enviando el identificador de recepción y la URL de la cola del mensaje al método [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#deleteMessage(software.amazon.awssdk.services.sqs.model.DeleteMessageRequest)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#deleteMessage(software.amazon.awssdk.services.sqs.model.DeleteMessageRequest)) de `SqsClient's`.

 **Importaciones** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **Código** 

```
        try {
            for (Message message : messages) {
                DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder()
                        .queueUrl(queueUrl)
                        .receiptHandle(message.receiptHandle())
                        .build();
                sqsClient.deleteMessage(deleteMessageRequest);
            }
```

Vea el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L187) en GitHub.

## Más información
<a name="more-info"></a>
+  [Cómo funcionan Amazon Simple Queue Service las colas](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html) en la guía Amazon Simple Queue Service para desarrolladores
+  [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)en la referencia de la Amazon Simple Queue Service API
+  [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)en la referencia Amazon Simple Queue Service de la API
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)en la referencia Amazon Simple Queue Service de la API
+  [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)en la referencia Amazon Simple Queue Service de la API