Anunciamos
Enviar e receber mensagens no Amazon SQS
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:
Instale o Node.js. Para obter mais informações sobre como instalar Node.js, consulte o website de Node.js
. Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhadas, consulte Carregar credenciais em Node.js do arquivo de credenciais compartilhado.
Como criar uma fila do Amazon SQS. Para ver um exemplo de como criar uma fila, consulte Uso de filas no Amazon SQS.
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