

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Questa sezione fornisce esempi di programmazione [Amazon Simple Queue Service](https://docs.aws.amazon.com/sqs/)con AWS SDK per Java 2.x.

Gli esempi seguenti includono solo il codice necessario per dimostrare ciascuna tecnica. Il [codice di esempio completo è disponibile su. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2) Da qui puoi scaricare un singolo file sorgente o clonare l'archivio localmente per ottenere tutti gli esempi da creare ed eseguire.

**Topics**
+ [Utilizza il raggruppamento automatico delle richieste](sqs-auto-batch.md)
+ [Operazioni di coda](examples-sqs-message-queues.md)
+ [Operazioni relative ai messaggi](examples-sqs-messages.md)

# Utilizza il batching automatico delle richieste per Amazon SQS con AWS SDK for Java 2.x
<a name="sqs-auto-batch"></a>

L'API Automatic Request Batching per Amazon SQS è una libreria di alto livello che fornisce un modo efficiente per creare batch e bufferizzare le richieste per le operazioni SQS. Utilizzando l'API di batching, riduci il numero di richieste a SQS, il che migliora la produttività e minimizza i costi. 

Poiché i metodi dell'API batch corrispondono ai `[SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)` metodi—`sendMessage`,, `changeMessageVisibility``deleteMessage`, `receiveMessage` —puoi utilizzare l'API batch come sostituto immediato con modifiche minime. 

Questo argomento offre una panoramica su come configurare e utilizzare l'API Automatic Request Batching per Amazon SQS.

## Verifica i prerequisiti
<a name="sqs-auto-batch-requirements"></a>

È necessario utilizzare la versione *2.28.0* o successiva dell'SDK for Java 2.x per avere accesso all'API di batch. Il tuo Maven `pom.xml` dovrebbe contenere almeno i seguenti elementi.

```
<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 Ultima versione](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)

## Crea un gestore di batch
<a name="sqs-auto-batch-create"></a>

L'API di raggruppamento automatico delle richieste è implementata dall'[SqsAsyncBatchManager](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html)interfaccia. È possibile creare un'istanza del gestore in due modi.

### Configurazione predefinita utilizzando `SqsAsyncClient`
<a name="sqs-batch-manager-create-default"></a>

Il modo più semplice per creare un gestore di batch consiste nel chiamare il metodo `batchManager` factory su un'[SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)istanza esistente. L'approccio semplice è illustrato nel frammento seguente. 

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

Quando utilizzate questo approccio, l'`SqsAsyncBatchManager`istanza utilizza i valori predefiniti mostrati nella tabella della sezione. [Sostituisci le impostazioni di configurazione per `SqsAsyncBatchManager`](#sqs-auto-batch-config-settings) Inoltre, l'`SqsAsyncBatchManager`istanza utilizza `ExecutorService` l'`SqsAsyncClient`istanza da cui è stata creata.

### Configurazione personalizzata utilizzando `SqsAsyncBatchManager.Builder`
<a name="sqs-batch-manager-create-custom"></a>

Per casi d'uso più avanzati, è possibile personalizzare il gestore batch utilizzando [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). Utilizzando questo approccio per creare un'`SqsAsyncBatchManager`istanza, è possibile ottimizzare il comportamento di batch. Il seguente frammento mostra un esempio di come utilizzare il builder per personalizzare il comportamento del batch.

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

Quando utilizzate questo approccio, potete regolare le impostazioni sull'`BatchOverrideConfiguration`oggetto mostrate nella tabella della sezione. [Sostituisci le impostazioni di configurazione per `SqsAsyncBatchManager`](#sqs-auto-batch-config-settings) È inoltre possibile fornire una personalizzazione [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)per il gestore dei batch utilizzando questo approccio.

## Inviare messaggi
<a name="sqs-auto-batch-send"></a>

Per inviare messaggi con il gestore batch, usa il `[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))` metodo. L'SDK memorizza le richieste e le invia come batch quando vengono raggiunti `sendRequestFrequency` i valori `maxBatchSize` or.

L'esempio seguente mostra una `sendMessage` richiesta immediatamente successiva a un'altra richiesta. In questo caso, l'SDK invia entrambi i messaggi in un unico batch.

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

## Modifica il timeout di visibilità dei messaggi
<a name="sqs-auto-batch-change-vis"></a>

È possibile modificare il timeout di visibilità dei messaggi in un batch utilizzando il [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))metodo. L'SDK memorizza le richieste nel buffer e le invia in batch quando vengono raggiunti `sendRequestFrequency` i valori `maxBatchSize` or.

L'esempio seguente mostra come chiamare il `changeMessageVisibility` metodo.

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

## Eliminare i messaggi
<a name="sqs-auto-batch-delete"></a>

È possibile eliminare i messaggi in batch utilizzando il [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))metodo. L'SDK memorizza le richieste nel buffer e le invia come batch quando vengono raggiunti `sendRequestFrequency` i valori `maxBatchSize` or.

L'esempio seguente mostra come chiamare il `deleteMessage` metodo.

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

## Ricevere messaggi
<a name="sqs-auto-batch-receive"></a>

### Usa le impostazioni predefinite
<a name="sqs-auto-batch-receive-default-settings"></a>

Quando esegui il polling del `[SqsAsyncBatchManager\$1receiveMessage](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#receiveMessage(java.util.function.Consumer))` metodo nell'applicazione, il gestore batch recupera i messaggi dal suo buffer interno, che l'SDK aggiorna automaticamente in background.

L'esempio seguente mostra come chiamare il metodo. `receiveMessage`

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

### Usa impostazioni personalizzate
<a name="sqs-auto-batch-receive-custom-settings"></a>

Se desideri personalizzare ulteriormente la richiesta, ad esempio impostando tempi di attesa personalizzati e specificando il numero di messaggi da recuperare, puoi personalizzare la richiesta come mostrato nell'esempio seguente.

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

**Nota**  
Se chiami `receiveMessage` con un `[ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)` che include uno dei seguenti parametri, l'SDK ignora il gestore batch e invia una normale richiesta asincrona: `receiveMessage`  
`messageAttributeNames`
`messageSystemAttributeNames`
`messageSystemAttributeNamesWithStrings`
`overrideConfiguration`

## Sostituisci le impostazioni di configurazione per `SqsAsyncBatchManager`
<a name="sqs-auto-batch-config-settings"></a>

È possibile modificare le seguenti impostazioni quando si crea un'`SqsAsyncBatchManager`istanza. Il seguente elenco di impostazioni è disponibile in [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).


| Impostazione | Description | Valore predefinito | 
| --- | --- | --- | 
| maxBatchSize | Numero massimo di richieste per batch per ciascuna SendMessageBatchRequestChangeMessageVisibilityBatchRequest, oDeleteMessageBatchRequest. Il valore massimo è 10. | 10 | 
| sendRequestFrequency |  Tempo prima dell'invio di un batch, a meno che non `maxBatchSize` venga raggiunto prima. Valori più alti possono ridurre le richieste ma aumentare la latenza.  | 200 ms | 
| receiveMessageVisibilityTimeout | Timeout di visibilità per i messaggi. Se non è impostato, viene utilizzato il valore predefinito della coda. | L'impostazione predefinita della coda | 
| receiveMessageMinWaitDuration | Tempo di attesa minimo per le receiveMessage richieste. Evita di impostarlo su 0 per evitare sprechi di CPU. | 50 ms | 
| receiveMessageSystemAttributeNames | Elenco dei [nomi degli attributi di sistema](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/MessageSystemAttributeName.html) da richiedere per receiveMessage le chiamate. | Nessuno | 
| receiveMessageAttributeNames | Elenco dei [nomi degli attributi](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes) da richiedere per receiveMessage le chiamate. | Nessuno | 

# Lavora con le code di Amazon Simple Queue Service messaggi
<a name="examples-sqs-message-queues"></a>

Una *coda di messaggi* è il contenitore logico utilizzato per inviare messaggi in modo affidabile. Amazon Simple Queue Service Sono disponibili due tipi di code: *standard* e *first-in, first-out* (FIFO). [Per ulteriori informazioni sulle code e sulle differenze tra questi tipi, consulta la Guida per gli Amazon Simple Queue Service sviluppatori.](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)

Questo argomento descrive come creare, elencare, eliminare e ottenere l'URL di una Amazon Simple Queue Service coda utilizzando. AWS SDK per Java

La `sqsClient` variabile utilizzata negli esempi seguenti può essere creata dal seguente frammento.

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

[Quando si crea un `SqsClient` utilizzando il `create()` metodo statico, l'SDK configura la regione utilizzando la catena di provider di aree [predefinita e le credenziali utilizzando la catena di provider](region-selection.md#default-region-provider-chain) di credenziali predefinita.](credentials-chain.md)

## Crea una coda
<a name="sqs-create-queue"></a>

Utilizzate il `SqsClient’s` `createQueue` metodo e fornite un `[CreateQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/CreateQueueRequest.html)` oggetto che descriva i parametri della coda come mostrato nel seguente frammento di codice.

 **Importazioni** 

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

 **Codice** 

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

            sqsClient.createQueue(createQueueRequest);
```

Vedi l'esempio [completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L52) su. GitHub

## Elencare code
<a name="sqs-list-queues"></a>

Per elencare le Amazon Simple Queue Service code relative al tuo account, chiama il `SqsClient’s` `listQueues` metodo con un `[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` oggetto.

Quando utilizzate il modulo del [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())metodo che non accetta parametri, il servizio restituisce *tutte le code, fino a 1.000 code*. 

È possibile fornire un prefisso per il nome della coda all'`[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)`oggetto per limitare i risultati alle code che corrispondono a tale prefisso, come illustrato nel codice seguente.

 **Importazioni** 

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

 **Codice** 

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

[Guarda l'esempio completo su.](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L79) GitHub

## Ottenere l'URL di una coda
<a name="sqs-get-queue-url"></a>

Il codice seguente mostra come ottenere l'URL di una coda chiamando il `SqsClient’s` `getQueueUrl` metodo con un `[GetQueueUrlRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/GetQueueUrlRequest.html)` oggetto.

 **Importazioni** 

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

 **Codice** 

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

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/7486a1a092aa8e16a21698ef26f9d524fef62e55/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L70) su. GitHub

## Elimina una coda
<a name="sqs-delete-queue"></a>

Fornisci l'[URL](#sqs-get-queue-url) della coda all'`[DeleteQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/DeleteQueueRequest.html)`oggetto. Quindi chiamate il `SqsClient’s` `deleteQueue` metodo per eliminare una coda come mostrato nel codice seguente.

 **Importazioni** 

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

 **Codice** 

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

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/6240df86c5f17eae1e23d1139d1435c7dc4b2a11/javav2/example_code/sqs/src/main/java/com/example/sqs/DeleteQueue.java#L48) su. GitHub

## Ulteriori informazioni
<a name="more-information"></a>
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)nell' Amazon Simple Queue Service API Reference
+  [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)nell' Amazon Simple Queue Service API Reference
+  [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)nell' Amazon Simple Queue Service API Reference
+  [DeleteQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueue.html)nell' Amazon Simple Queue Service API Reference

# Inviare, ricevere ed eliminare Amazon Simple Queue Service messaggi
<a name="examples-sqs-messages"></a>

Un messaggio è una parte di dati che possono essere inviati e ricevuti da componenti distribuiti. I messaggi vengono sempre distribuiti tramite una [coda SQS](examples-sqs-message-queues.md).

La `sqsClient` variabile utilizzata negli esempi seguenti può essere creata dal seguente frammento.

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

[Quando si crea un `SqsClient` utilizzando il `create()` metodo statico, l'SDK configura la regione utilizzando la catena di provider di aree [predefinita e le credenziali utilizzando la catena di provider](region-selection.md#default-region-provider-chain) di credenziali predefinita.](credentials-chain.md)

## Invio di un messaggio
<a name="sqs-message-send"></a>

Aggiungi un singolo messaggio a una Amazon Simple Queue Service coda chiamando il metodo client. SqsClient `sendMessage` Fornisci un [SendMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageRequest.html)oggetto che contenga l'[URL](examples-sqs-message-queues.md#sqs-get-queue-url) della coda, il corpo del messaggio e il valore di ritardo opzionale (in secondi).

 **Importazioni** 

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

 **Codice** 

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

            sqsClient.sendMessage(sendMsgRequest);
```

## Invia più messaggi in una richiesta
<a name="sqs-messages-send-multiple"></a>

Invia più messaggi in una singola richiesta utilizzando il metodo SqsClient di `sendMessageBatch`. Questo metodo richiede un file [SendMessageBatchRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequest.html)che contenga l'URL della coda e un elenco di messaggi da inviare. (Ogni messaggio è un [SendMessageBatchRequestEntry](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequestEntry.html).) Puoi anche ritardare l'invio di un messaggio specifico impostando un valore di ritardo nel messaggio.

 **Importazioni** 

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

 **Codice** 

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

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L133) su GitHub.

## Recuperare messaggi
<a name="sqs-messages-receive"></a>

Recupera eventuali messaggi che si trovano attualmente nella coda chiamando il metodo SqsClient di `receiveMessage`. Questo metodo accetta un file [ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)che contiene l'URL della coda. Puoi specificare il numero massimo di messaggi da restituire. I messaggi vengono restituiti come un elenco di oggetti [Message](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/Message.html).

 **Importazioni** 

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

 **Codice** 

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

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L148) su. GitHub

## Eliminare un messaggio dopo la ricezione
<a name="sqs-messages-delete"></a>

Dopo aver ricevuto un messaggio e averne elaborato il contenuto, eliminatelo dalla coda inviando al metodo l'handle di ricezione e l'URL di coda del `SqsClient's` [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))messaggio.

 **Importazioni** 

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

 **Codice** 

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

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L187) su. GitHub

## Ulteriori informazioni
<a name="more-info"></a>
+  [Come funzionano Amazon Simple Queue Service le code](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html) nella Guida per gli Amazon Simple Queue Service sviluppatori
+  [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)nell' Amazon Simple Queue Service API Reference
+  [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)nell' Amazon Simple Queue Service API Reference
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)nell' Amazon Simple Queue Service API Reference
+  [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)nell' Amazon Simple Queue Service API Reference