Enviar e receber mensagens no Amazon SQS - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Enviar e receber mensagens no Amazon SQS

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como enviar mensagens em uma fila.

  • Como receber mensagens em uma fila.

  • Como excluir mensagens em uma fila.

O cenário

Neste exemplo, é usada uma série de módulos do Node.js para enviar e receber mensagens. Os módulos do Node.js usam o SDK para JavaScript para enviar e receber mensagens usando estes métodos da classe de cliente do AWS.SQS:

Para obter mais informações sobre mensagens do Amazon SQS, consulte Envio de uma mensagem para uma fila do Amazon SQS Queue e Recebimento e exclusão de uma mensagem de uma fila do Amazon SQS Queue no Guia do desenvolvedor do Amazon SQS Queue.

Tarefas de pré-requisito

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:

Enviar uma mensagem para uma fila

Crie um módulo do Node.js com o nome de arquivo sqs_sendmessage.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o Amazon SQS, crie um objeto de serviço do AWS.SQS. Crie um objeto JSON que contém os parâmetros necessários para sua mensagem, incluindo o URL da fila para a qual você deseja enviar essa mensagem. Neste exemplo, a mensagem fornece detalhes sobre um livro em uma lista de mais vendidos de ficção e inclui o título, o autor e o número de semanas na lista dos mais vendidos.

Chame o método sendMessage. O retorno de chamada retorna o ID exclusivo da mensagem.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create an SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { // Remove DelaySeconds parameter and value for FIFO queues DelaySeconds: 10, MessageAttributes: { Title: { DataType: "String", StringValue: "The Whistler", }, Author: { DataType: "String", StringValue: "John Grisham", }, WeeksOn: { DataType: "Number", StringValue: "6", }, }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues QueueUrl: "SQS_QUEUE_URL", }; sqs.sendMessage(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.MessageId); } });

Para executar o exemplo, digite o seguinte na linha de comando.

node sqs_sendmessage.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Receber e excluir mensagens de uma fila

Crie um módulo do Node.js com o nome de arquivo sqs_receivemessage.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o Amazon SQS, crie um objeto de serviço do AWS.SQS. Crie um objeto JSON que contém os parâmetros necessários para sua mensagem, incluindo o URL da fila da qual você deseja receber mensagens. Neste exemplo, os parâmetros especificam o recebimento de todos os atributos de mensagem, bem como o recebimento de não mais de 10 mensagens.

Chame o método receiveMessage. O retorno de chamada retorna um array de objetos Message a partir do qual você pode recuperar ReceiptHandle para cada mensagem que usar para mais tarde excluir essa mensagem. Crie outro objeto JSON contendo os parâmetros necessários para excluir a mensagem, que são o URL da fila e o valor ReceiptHandle. Chame o método deleteMessage para excluir a mensagem que você recebeu.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create an SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var queueURL = "SQS_QUEUE_URL"; var params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0, }; sqs.receiveMessage(params, function (err, data) { if (err) { console.log("Receive Error", err); } else if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, }; sqs.deleteMessage(deleteParams, function (err, data) { if (err) { console.log("Delete Error", err); } else { console.log("Message Deleted", data); } }); } });

Para executar o exemplo, digite o seguinte na linha de comando.

node sqs_receivemessage.js

Este código de exemplo pode ser encontrado aqui no GitHub.