Anunciamos
Habilitación del sondeo largo en Amazon SQS
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:
Instale Node.js. Para obtener más información acerca de la instalación de Node.js consulte el sitio web de Node.js
. Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo crear un archivo de credenciales compartidas, consulte Carga de credenciales en Node.js desde el archivo de credenciales compartidas.
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