Enviar, recibir y eliminar Amazon Simple Queue Service mensajes - 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 Amazon Simple Queue Service mensajes

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

Agrega un solo mensaje a una Amazon Simple Queue Service cola llamando al sendMessage método SqsClient cliente. 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);

Vea 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, 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

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

Vea el ejemplo completo en GitHub.

Más información