Inviare, ricevere ed eliminare Amazon Simple Queue Service messaggi - AWS SDK for Java 2.x

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à.

Inviare, ricevere ed eliminare Amazon Simple Queue Service messaggi

Un messaggio è una parte di dati che possono essere inviati e ricevuti da componenti distribuiti. I messaggi vengono sempre distribuiti tramite una coda SQS.

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 di credenziali predefinita.

Invio di un messaggio

Aggiungi un singolo messaggio a una Amazon Simple Queue Service coda chiamando il metodo client. SqsClient sendMessage Fornisci un SendMessageRequestoggetto che contenga l'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

Invia più messaggi in una singola richiesta utilizzando il metodo SqsClient di sendMessageBatch. Questo metodo richiede un file SendMessageBatchRequestche contenga l'URL della coda e un elenco di messaggi da inviare. (Ogni messaggio è un SendMessageBatchRequestEntry.) 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 su GitHub.

Recuperare messaggi

Recupera eventuali messaggi che si trovano attualmente nella coda chiamando il metodo SqsClient di receiveMessage. Questo metodo accetta un file ReceiveMessageRequestche contiene l'URL della coda. Puoi specificare il numero massimo di messaggi da restituire. I messaggi vengono restituiti come un elenco di oggetti Message.

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 su. GitHub

Eliminare un messaggio dopo la ricezione

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 deleteMessagemessaggio.

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 su. GitHub

Ulteriori informazioni