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

LaAWS SDK for JavaScript versión 3 (v3) es una reescritura de la versión 2 con algunas funciones nuevas y excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de la versiónAWS SDK for JavaScript 3.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 especificado hasta 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 permitir un sondeo largo mediante estos métodos delAWS.SQSclase de cliente:

Para obtener más información acerca del sondeo largo de Amazon SQS, consulte.Sondeo largoen laGuí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 acceder a Amazon SQS, cree unAWS.SQSobjeto de servicio. 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 muestra 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 unAWS.SQSobjeto de servicio. 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 muestra 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 unAWS.SQSobjeto de servicio. 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 muestra se puede encontrar aquí en GitHub.