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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 siguientes se puede crear a partir del siguiente fragmento.

SqsClient sqsClient = SqsClient.create();

Al crear una SqsClient mediante el create() método 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

Agrega un solo mensaje a una Amazon Simple Queue Service cola llamando al método SqsClient clientesendMessage. Proporcione un SendMessageRequestobjeto 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

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 SqsClient sendMessageBatch. Este método toma una SendMessageBatchRequestque 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

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 SqsClient receiveMessage. Este método toma una ReceiveMessageRequestque 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

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, elimínelo de la cola enviando el identificador de recepción del mensaje y la URL de la cola al SqsClient's deleteMessagemétodo.

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

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

Consulta el ejemplo completo en. GitHub

Más información