Enviar, recibir y eliminar mensajes de Amazon Simple Queue Service - AWS SDK for Java 2.x

Enviar, recibir y eliminar mensajes de Amazon Simple Queue Service

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.

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 y las credenciales mediante la cadena de proveedores de credenciales predeterminada.

Enviar un mensaje

Añada un único mensaje a una cola de Amazon Simple Queue Service llamando al método sendMessage del cliente SqsClient. Proporcione un objeto SendMessageRequest que contenga la 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 de

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

Enviar varios mensajes en una solicitud

Envíe varios mensajes en una sola solicitud mediante el método sendMessageBatch de SqsClient. Este método toma un objeto SendMessageBatchRequest que contiene la URL de la cola y una lista de los mensajes que se van a enviar. (Cada mensaje es un SendMessageBatchRequestEntry). 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 de

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

Consulte el ejemplo completo en GitHub.

Recuperar mensajes

Recupere todos los mensajes que se encuentran actualmente en la cola llamando al método receiveMessage de SqsClient. Este método toma un objeto ReceiveMessageRequest 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.

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 de

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

Eliminar un mensaje después de su recepción

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 deleteMessage 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 de

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

Consulte el ejemplo completo en GitHub.

Más información