Habilitación del sondeo largo en Amazon SQS - AWS SDK for JavaScript

Anunciamos el próximo fin del soporte para AWS SDK for JavaScript v2. Se recomienda que migre a AWS SDK for JavaScript v3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Habilitación del sondeo largo en Amazon SQS

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo habilitar los sondeos largos para una cola que se acaba de crear.

  • Cómo habilitar un sondeo largo para una cola ya existente.

  • Cómo habilitar un sondeo largo al recibir un mensaje.

El escenario

El sondeo largo reduce el número de respuestas vacías al permitir que Amazon SQS espere un tiempo determinado a que haya un mensaje disponible en la cola antes de enviar una respuesta. Asimismo, el sondeo largo elimina las respuestas vacías falsas, ya que consulta todos los servidores en lugar de solo una muestra de servidores. Para habilitar el sondeo largo, debe especificar un tiempo de espera diferente de cero para los mensajes recibidos. Puede hacerlo estableciendo el parámetro ReceiveMessageWaitTimeSeconds de una cola o estableciendo el parámetro WaitTimeSeconds en un mensaje al recibirse este.

En este ejemplo, se utilizan una serie de módulos de Node.js para habilitar un sondeo largo. Los módulos de Node.js usan el SDK para JavaScript para habilitar un sondeo largo con los métodos de la clase de cliente AWS.SQS siguientes:

Para obtener más información sobre el sondeo largo de Amazon SQS, consulte Sondeo largo en la Guía para desarrolladores de Amazon Simple Queue Service.

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:

Habilitación de un sondeo largo al crear una cola

Cree un módulo de Node.js con el nombre de archivo sqs_longpolling_createqueue.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a Amazon SQS, cree un objeto de servicio de AWS.SQS. Cree un objeto JSON que contenga los parámetros necesarios para crear una cola, como un valor distinto de cero para el parámetro ReceiveMessageWaitTimeSeconds. Llame al método createQueue. El sondeo largo se habilita entonces para la cola.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { QueueName: "SQS_QUEUE_NAME", Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, }; sqs.createQueue(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.QueueUrl); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sqs_longpolling_createqueue.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Habilitar el sondeo largo en una cola existente

Cree un módulo de Node.js con el nombre de archivo sqs_longpolling_existingqueue.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para acceder a Amazon Simple Queue Service, cree un objeto de servicio de AWS.SQS. Cree un objeto JSON que contenga los parámetros necesarios para establecer los atributos de la cola, como un valor distinto de cero para el parámetro ReceiveMessageWaitTimeSeconds y la dirección URL de la cola. Llame al método setQueueAttributes. El sondeo largo se habilita entonces para la cola.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, QueueUrl: "SQS_QUEUE_URL", }; sqs.setQueueAttributes(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sqs_longpolling_existingqueue.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Habilitar el sondeo largo al recibir un mensaje

Cree un módulo de Node.js con el nombre de archivo sqs_longpolling_receivemessage.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para acceder a Amazon Simple Queue Service, cree un objeto de servicio de AWS.SQS. Cree un objeto JSON que contenga los parámetros necesarios para recibir mensajes, como un valor distinto de cero para el parámetro WaitTimeSeconds y la dirección URL de la cola. Llame al método receiveMessage.

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

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sqs_longpolling_receivemessage.js

Este código de ejemplo se puede encontrar aquí en GitHub.