Anunciamos
Gerenciar o tempo limite de visibilidade no Amazon SQS
Este exemplo de código Node.js mostra:
Como especificar o intervalo de tempo durante o qual as mensagens recebidas por uma fila não ficam visíveis.
O cenário
Neste exemplo, o módulo Node.js é usado para gerenciar o tempo limite de visibilidade. O Node.js usa o SDK para JavaScript para gerenciar o tempo limite de visibilidade usando este método da classe de cliente AWS.SQS
:
Para obter mais informações sobre tempos limite de visibilidade do Amazon SQS, consulte Tempo limite de visibilidade no Guia do desenvolvedor do Amazon Simple Queue Service.
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.
Envie uma mensagem para a fila. Para obter um exemplo de envio de uma mensagem para uma fila, consulte Enviar e receber mensagens no Amazon SQS.
Alterar o tempo limite de visibilidade
Crie um módulo do Node.js com o nome de arquivo sqs_changingvisibility.js
. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o Amazon Simple Queue Service, crie um objeto de serviço do AWS.SQS
. Receba a mensagem da fila.
Após o recebimento da mensagem da fila, crie um objeto JSON contendo os parâmetros necessários para configurar o tempo limite, incluindo o URL da fila que contém a mensagem, o ReceiptHandle
retornado quando a mensagem foi recebida e o novo tempo limite, em segundos. Chame o método changeMessageVisibility
.
// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region to us-west-2 AWS.config.update({ region: "us-west-2" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var queueURL = "https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME"; var params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"], QueueUrl: queueURL, }; sqs.receiveMessage(params, function (err, data) { if (err) { console.log("Receive Error", err); } else { // Make sure we have a message if (data.Messages != null) { var visibilityParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, VisibilityTimeout: 20, // 20 second timeout }; sqs.changeMessageVisibility(visibilityParams, function (err, data) { if (err) { console.log("Delete Error", err); } else { console.log("Timeout Changed", data); } }); } else { console.log("No messages to change"); } } });
Para executar o exemplo, digite o seguinte na linha de comando.
node sqs_changingvisibility.js
Este código de exemplo pode ser encontrado aqui no GitHub