Enviar, receber e excluir mensagens do Amazon Simple Queue Service - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Quando você cria um SqsClient usando o create() método estático, o SDK configura a região usando a cadeia de provedores da região padrão e as credenciais usando a cadeia de provedores de credenciais padrão.

Enviar uma mensagem

Adicione uma única mensagem a uma Amazon Simple Queue Service fila chamando o sendMessage método SqsClient cliente. Forneça um SendMessageRequestobjeto que contenha a URL da fila, o corpo da mensagem e o valor de atraso opcional (em segundos).

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

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 usa um SendMessageBatchRequestque contém o URL da fila e uma lista de mensagens a serem enviadas. (Cada mensagem é uma SendMessageBatchRequestEntry.) Você também pode atrasar o envio de uma mensagem específica, configurando um valor de atraso na mensagem.

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

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

Veja a amostra completa em GitHub.

Recuperar mensagens

Recupere todas as mensagens que estejam atualmente na fila chamando o método do receiveMessage do SqsClient . Esse método usa um ReceiveMessageRequestque contém o URL da fila. Você também pode especificar o número máximo de mensagens para retornar. As mensagens são retornadas como uma lista de objetos Message.

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

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;

Veja a amostra completa em GitHub.

Excluir uma mensagem após o recebimento

Depois de receber uma mensagem e processar seu conteúdo, exclua a mensagem da fila enviando o identificador de recebimento da mensagem e o URL da fila para o SqsClient's deleteMessagemétodo.

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

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

Veja a amostra completa em GitHub.

Mais informações