Envoyer, recevoir et supprimer Amazon Simple Queue Service des messages - AWS SDK for Java 2.x

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoyer, recevoir et supprimer Amazon Simple Queue Service des messages

Un message est une portion de données qui peut être envoyée et reçue par des composants distribués. Les messages sont toujours livrés à l'aide d'une file d'attente SQS.

La sqsClient variable utilisée dans les exemples suivants peut être créée à partir de l'extrait de code suivant.

SqsClient sqsClient = SqsClient.create();

Lorsque vous créez un en SqsClient utilisant la create() méthode statique, le SDK configure la région en utilisant la chaîne de fournisseurs de régions par défaut et les informations d'identification en utilisant la chaîne de fournisseurs d'informations d'identification par défaut.

Envoyer un message

Ajoutez un seul message à une Amazon Simple Queue Service file d'attente en appelant la sendMessage méthode SqsClient client. Fournissez un SendMessageRequestobjet contenant l'URL de la file d'attente, le corps du message et la valeur de délai facultative (en secondes).

Importations

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

Code

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

Envoyer plusieurs messages dans une demande

Envoyez plusieurs messages dans une seule demande à l'aide de la méthode sendMessageBatch d' SqsClient . Cette méthode utilise un SendMessageBatchRequestqui contient l'URL de la file d'attente et une liste de messages à envoyer. (Chaque message est un SendMessageBatchRequestEntry.) Vous pouvez aussi retarder l'envoi d'un message spécifique en définissant une valeur de retard sur le message.

Importations

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

Code

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

Voir l'exemple complet sur GitHub.

Extraction des messages

Récupérez tous les messages qui sont actuellement dans la file d'attente en appelant la méthode receiveMessage d' SqsClient . Cette méthode utilise un ReceiveMessageRequestqui contient l'URL de la file d'attente. Vous pouvez également spécifier le nombre maximal de messages à renvoyer. Les messages sont renvoyés sous la forme d'une liste d'objets Message.

Importations

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

Code

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;

Voir l'exemple complet sur GitHub.

Supprimer un message après réception

Après avoir reçu un message et traité son contenu, supprimez-le de la file d'attente en envoyant le descripteur de réception du message et l'URL de la file d'attente à la SqsClient's deleteMessageméthode.

Importations

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

Code

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

Voir l'exemple complet sur GitHub.

Plus d'informations