

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Esta seção apresenta exemplos de como programar o [Amazon Simple Queue Service](https://docs.aws.amazon.com/sqs/) usando o AWS SDK para Java 2.x.

Os exemplos a seguir incluem somente o código necessário para demonstrar cada técnica. O [código de exemplo completo está disponível no GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2). A partir daí, você pode fazer download de um único arquivo de origem ou clonar o repositório de maneira local para obter todos os exemplos para compilação e execução.

**Topics**
+ [Usar o agrupamento em lotes automático de solicitações](sqs-auto-batch.md)
+ [Operações de fila](examples-sqs-message-queues.md)
+ [Operações de mensagens](examples-sqs-messages.md)

# Use o agrupamento automático de solicitações para o Amazon SQS com o AWS SDK for Java 2.x
<a name="sqs-auto-batch"></a>

A API de agrupamento em lotes automáticos de solicitações para Amazon SQS é uma biblioteca de alto nível que fornece uma maneira eficiente de agrupar e armazenar solicitações em buffer para operações do SQS. Ao usar a API de agrupamento em lotes, você reduz o número de solicitações para o SQS, o que melhora o throughput e minimiza os custos. 

Como os métodos da API em lote correspondem aos métodos `[SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)`: `sendMessage`, `changeMessageVisibility`, `deleteMessage`, `receiveMessage`, você pode usar a API em lote como uma substituição imediata com o mínimo de alterações. 

Este tópico fornece uma visão geral de como configurar e trabalhar com a API de agrupamento em lotes automático de solicitações para o Amazon SQS.

## Confira os pré-requisitos
<a name="sqs-auto-batch-requirements"></a>

Você precisa usar a versão *2.28.0* ou posterior do SDK para Java 2.x para ter acesso à API de agrupamento em lotes. O `pom.xml` do Maven deve conter pelo menos os elementos a seguir.

```
<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 [Versão mais recente](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)

## Criar um gerenciador de lotes
<a name="sqs-auto-batch-create"></a>

A API automática de envio em lote de solicitações é implementada pela [SqsAsyncBatchManager](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html)interface. É possível criar uma instância do gerente de duas maneiras.

### Configuração padrão usando `SqsAsyncClient`
<a name="sqs-batch-manager-create-default"></a>

A maneira mais simples de criar um gerenciador de lotes é chamar o método de `batchManager` fábrica em uma [SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)instância existente. A abordagem simples é mostrada no trecho a seguir. 

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

Quando você usa essa abordagem, a instância `SqsAsyncBatchManager` usa os valores padrão que são mostrados na tabela na seção [Substituir configurações para `SqsAsyncBatchManager`](#sqs-auto-batch-config-settings). Além disso, a instância `SqsAsyncBatchManager` usa o `ExecutorService` da instância `SqsAsyncClient` da qual foi criada.

### Configuração personalizada usando `SqsAsyncBatchManager.Builder`
<a name="sqs-batch-manager-create-custom"></a>

Para casos de uso mais avançados, você pode personalizar o gerenciador de lotes usando o [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). Ao usar essa abordagem para criar uma instância `SqsAsyncBatchManager`, você pode ajustar o comportamento do agrupamento em lotes. O trecho a seguir mostra um exemplo de como usar o compilador para personalizar o comportamento em lote.

```
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();
```

Ao usar essa abordagem, é possível ajustar as configurações do objeto `BatchOverrideConfiguration` que são mostradas na tabela na seção [Substituir configurações para `SqsAsyncBatchManager`](#sqs-auto-batch-config-settings). Você também pode fornecer uma personalização [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) para o gerenciador de lotes usando essa abordagem.

## Enviar mensagens
<a name="sqs-auto-batch-send"></a>

Para enviar mensagens com o gerenciador de lotes, use o 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))`. O SDK armazena as solicitações em buffer e as envia em lote quando os valores `maxBatchSize` ou `sendRequestFrequency` são atingidos.

O exemplo a seguir mostra uma solicitação `sendMessage` imediatamente seguida por outra solicitação. Nesse caso, o SDK envia as duas mensagens em um ú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();
```

## Alterar o tempo limite de visibilidade de mensagens
<a name="sqs-auto-batch-change-vis"></a>

É possível alterar o tempo limite de visibilidade das mensagens em um lote usando o 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)). O SDK armazena as solicitações em buffer e as envia em lote quando os valores `maxBatchSize` ou `sendRequestFrequency` são atingidos.

O exemplo a seguir mostra como chamar o método `changeMessageVisibility`.

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

## Exclua mensagens
<a name="sqs-auto-batch-delete"></a>

É possível excluir mensagens em um lote usando o 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)). O SDK armazena as solicitações em buffer e as envia em lote quando os valores `maxBatchSize` ou `sendRequestFrequency` são atingidos.

O exemplo a seguir mostra como é possível chamar o método `deleteMessage`.

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

## Receber mensagens
<a name="sqs-auto-batch-receive"></a>

### Usar configurações padrão
<a name="sqs-auto-batch-receive-default-settings"></a>

Quando você pesquisa o método `[SqsAsyncBatchManager\$1receiveMessage](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#receiveMessage(java.util.function.Consumer))` na aplicação, o gerenciador de lotes busca mensagens do buffer interno, que o SDK atualiza automaticamente em segundo plano.

O exemplo a seguir mostra como chamar o método `receiveMessage`.

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

### Usar configurações personalizadas
<a name="sqs-auto-batch-receive-custom-settings"></a>

Se quiser personalizar ainda mais a solicitação, por exemplo, definindo tempos de espera personalizados e especificando o número de mensagens a serem recuperadas, você poderá personalizar a solicitação conforme mostrado no exemplo a seguir.

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

**nota**  
Se você chamar `receiveMessage` com um `[ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)` que inclua qualquer um dos parâmetros a seguir, o SDK ignorará o gerenciador de lotes e enviará uma solicitação `receiveMessage` assíncrona regular:  
`messageAttributeNames`
`messageSystemAttributeNames`
`messageSystemAttributeNamesWithStrings`
`overrideConfiguration`

## Substituir configurações para `SqsAsyncBatchManager`
<a name="sqs-auto-batch-config-settings"></a>

É possível ajustar as seguintes configurações ao criar uma instância `SqsAsyncBatchManager`. A lista de configurações a seguir está disponível no [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).


| Configuração | Description | Valor padrão  | 
| --- | --- | --- | 
| maxBatchSize | Número máximo de solicitações por lote para cada SendMessageBatchRequest, ChangeMessageVisibilityBatchRequest ou DeleteMessageBatchRequest. O valor máximo é 10. | 10 | 
| sendRequestFrequency |  Tempo antes do envio de um lote, a menos que `maxBatchSize` seja atingido antes. Valores mais altos podem reduzir as solicitações, mas aumentar a latência.  | 200 ms | 
| receiveMessageVisibilityTimeout | Tempo limite de visibilidade para mensagens. Se não especificado, o padrão da fila será usado. | Padrão da fila | 
| receiveMessageMinWaitDuration | Tempo mínimo de espera para solicitações receiveMessage. Evite definir como 0 para evitar o desperdício da CPU. | 50 ms | 
| receiveMessageSystemAttributeNames | Lista de [nomes de atributos do sistema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/MessageSystemAttributeName.html) para solicitar chamadas receiveMessage. | Nenhum | 
| receiveMessageAttributeNames | Lista de [nomes de atributos](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes) para solicitar chamadas receiveMessage. | Nenhum | 

# Trabalhe com filas de Amazon Simple Queue Service mensagens
<a name="examples-sqs-message-queues"></a>

Uma *fila de mensagens* é o contêiner lógico usado para enviar mensagens de forma confiável. Amazon Simple Queue Service Existem dois tipos de filas: *padrão* e *First-In, First-Out* (FIFO – Primeiro a entrar, primeiro a sair). Para saber mais sobre as filas e as diferenças entre esses tipos, consulte o [Guia do desenvolvedor do Amazon Simple Queue Service](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html).

Este tópico descreve como criar, listar, excluir e obter o URL de uma Amazon Simple Queue Service fila usando o. AWS SDK para Java

A variável `sqsClient` usada nos exemplos a seguir pode ser criada a partir do trecho de código a seguir.

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

Ao criar um `SqsClient` usando o método estático `create()`, o SDK configura a região usando a [cadeia de provedores de região padrão](region-selection.md#default-region-provider-chain) e as credenciais usando a [cadeia de provedores de credenciais padrão](credentials-chain.md).

## Criar uma fila
<a name="sqs-create-queue"></a>

Use o método `createQueue` do `SqsClient’s` e forneça um objeto `[CreateQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/CreateQueueRequest.html)` que descreva os parâmetros da fila, conforme mostrado no trecho de código a seguir.

 **Importações** 

```
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);
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L52) em GitHub.

## Listar filas
<a name="sqs-list-queues"></a>

Para listar as Amazon Simple Queue Service filas da sua conta, chame o `SqsClient’s` `listQueues` método com um `[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` objeto.

Quando você usa a forma do 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 não usa parâmetros, o serviço retorna *todas as filas*, até mil filas. 

É possível fornecer um prefixo de nome da fila para o objeto `[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` a fim de limitar os resultados para filas que correspondem a esse prefixo, conforme mostrado no código a seguir.

 **Importações** 

```
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);
        }
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L79) em GitHub.

## Obter o URL de uma fila
<a name="sqs-get-queue-url"></a>

O código a seguir mostra como obter o URL de uma fila chamando o método `getQueueUrl` do `SqsClient’s` com um objeto `[GetQueueUrlRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/GetQueueUrlRequest.html)`.

 **Importações** 

```
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;
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/7486a1a092aa8e16a21698ef26f9d524fef62e55/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L70) em GitHub.

## Excluir uma fila
<a name="sqs-delete-queue"></a>

Forneça o [URL](#sqs-get-queue-url) da fila para o objeto `[DeleteQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/DeleteQueueRequest.html)`. Depois, chame o método `deleteQueue` do `SqsClient’s` para excluir uma fila, conforme mostrado no código a seguir.

 **Importações** 

```
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);
        }
    }
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/6240df86c5f17eae1e23d1139d1435c7dc4b2a11/javav2/example_code/sqs/src/main/java/com/example/sqs/DeleteQueue.java#L48) em GitHub.

## Mais informações
<a name="more-information"></a>
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)na Referência da Amazon Simple Queue Service API
+  [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)na Referência da Amazon Simple Queue Service API
+  [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)na Referência da Amazon Simple Queue Service API
+  [DeleteQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueue.html)na Referência da Amazon Simple Queue Service API

# Enviar, receber e excluir Amazon Simple Queue Service mensagens
<a name="examples-sqs-messages"></a>

Uma mensagem é um trecho de dados que pode ser enviado e recebido por componentes distribuídos. As mensagens são sempre entregues usando-se uma [fila do SQS](examples-sqs-message-queues.md).

A variável `sqsClient` usada nos exemplos a seguir pode ser criada a partir do trecho de código a seguir.

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

Ao criar um `SqsClient` usando o método estático `create()`, o SDK configura a região usando a [cadeia de provedores de região padrão](region-selection.md#default-region-provider-chain) e as credenciais usando a [cadeia de provedores de credenciais padrão](credentials-chain.md).

## Enviar uma mensagem
<a name="sqs-message-send"></a>

Adicione uma única mensagem a uma Amazon Simple Queue Service fila chamando o `sendMessage` método SqsClient cliente. Forneça um [SendMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageRequest.html)objeto que contenha a [URL](examples-sqs-message-queues.md#sqs-get-queue-url) da fila, o corpo da mensagem e o valor de atraso opcional (em segundos).

 **Importações** 

```
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 várias mensagens em uma solicitação
<a name="sqs-messages-send-multiple"></a>

Envie mais de uma mensagem em uma única solicitação usando o método do `sendMessageBatch` do SqsClient . Esse método usa um [SendMessageBatchRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequest.html)que contém o URL da fila e uma lista de mensagens a serem enviadas. (Cada mensagem é uma [SendMessageBatchRequestEntry](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequestEntry.html).) Você também pode atrasar o envio de uma mensagem específica, configurando um valor de atraso na mensagem.

 **Importações** 

```
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);
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L133) em GitHub.

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

Recupere todas as mensagens que estejam atualmente na fila chamando o método do `receiveMessage` do SqsClient . Esse método usa um [ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)que contém o URL da fila. Você também pode especificar o número máximo de mensagens para retornar. As mensagens são retornadas como uma lista de objetos [Message](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/Message.html).

 **Importações** 

```
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;
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L148) em GitHub.

## Excluir uma mensagem após o recebimento
<a name="sqs-messages-delete"></a>

Após receber uma mensagem e processar o conteúdo, exclua a mensagem da fila enviando o identificador de recebimento da mensagem e o URL da fila para o 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)) do `SqsClient's`.

 **Importações** 

```
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);
            }
```

Veja a [amostra completa](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L187) em GitHub.

## Mais informações
<a name="more-info"></a>
+  [Como Amazon Simple Queue Service as filas funcionam](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html) no Guia do Amazon Simple Queue Service desenvolvedor
+  [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)na Referência da Amazon Simple Queue Service API
+  [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)na Referência da Amazon Simple Queue Service API
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)na Referência da Amazon Simple Queue Service API
+  [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)na Referência da Amazon Simple Queue Service API