Gerenciar o tempo limite de visibilidade 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.

Gerenciar o tempo limite de visibilidade no Amazon SQS

JavaScript code example that applies to Node.js execution

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:

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.