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
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
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
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
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
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 deleteMessageSqsClient'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
Más información
-
Cómo funcionan las colas de Amazon Simple Queue Service en la Guía para desarrolladores de Amazon Simple Queue Service
-
SendMessage en la referencia de la API de Amazon Simple Queue Service
-
SendMessageBatch en la referencia de la API de Amazon Simple Queue Service
-
ReceiveMessage en la Referencia de la API de Amazon Simple Queue Service
-
DeleteMessage en la Referencia de la API de Amazon Simple Queue Service