Enviar, receber e excluir mensagens do Amazon Simple Queue Service
Uma mensagem é um trecho de dados que pode ser enviado e recebido por componentes distribuídos. As mensagens são sempre entregues usando-se uma fila do SQS.
A variável sqsClient usada nos exemplos a seguir pode ser criada a partir do trecho de código a seguir.
SqsClient sqsClient = SqsClient.create();
Ao criar um SqsClient usando o método estático create(), o SDK configura a região usando a cadeia de provedores de região padrão e as credenciais usando a cadeia de provedores de credenciais padrão.
Enviar uma mensagem
Adicione uma mensagem única a uma fila do Amazon Simple Queue Service chamando o método sendMessage de cliente do SqsClient. Forneça um objeto SendMessageRequest
Importações
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 da
sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10) .build()); sqsClient.sendMessage(sendMsgRequest);
Enviar várias mensagens em uma solicitação
Envie mais de uma mensagem em uma única solicitação usando o método do sendMessageBatch do SqsClient. Esse método utiliza um SendMessageBatchRequest
Importações
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 da
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 a amostra completa
Recuperar mensagens
Recupere todas as mensagens que estejam atualmente na fila chamando o método do receiveMessage do SqsClient. Esse método utiliza um ReceiveMessageRequest
Importações
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 da
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 a amostra completa
Excluir uma mensagem após o recebimento
Após receber uma mensagem e processar o conteúdo, exclua a mensagem da fila enviando o identificador de recebimento da mensagem e o URL da fila para o método deleteMessageSqsClient's.
Importações
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 da
try { for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); }
Consulte a amostra completa
Mais informações
-
Como as filas do Amazon Simple Queue Service funcionam no Guia do Desenvolvedor do Amazon Simple Queue Service
-
SendMessage na Referência de API do Amazon Simple Queue Service
-
SendMessageBatch na Referência de API do Amazon Simple Queue Service
-
ReceiveMessage na Referência de API do Amazon Simple Queue Service
-
DeleteMessage na Referência de API do Amazon Simple Queue Service