Anunciamos
Administración del tiempo de espera de visibilidad en Amazon SQS
Este ejemplo de código de Node.js muestra:
Cómo especificar el intervalo de tiempo durante el cual los mensajes que una cola recibe no son visibles.
El escenario
En este ejemplo, se utiliza un módulo de Node.js para administrar el tiempo de espera de visibilidad. El módulo de Node.js usa el SDK para JavaScript para administrar el tiempo de espera de visibilidad mediante este método de la clase de cliente AWS.SQS
:
Para obtener más información sobre tiempos de espera de visibilidad de Amazon SQS, consulte Tiempo de espera de visibilidad 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.
Crear una cola de Amazon SQS. Para ver un ejemplo de cómo crear una cola, consulte Uso de colas en Amazon SQS.
Envíe un mensaje a la cola. Para ver un ejemplo de cómo enviar un mensaje a una cola, consulte Envío y recepción de mensajes en Amazon SQS.
Cambio del tiempo de espera de visibilidad
Cree un módulo de Node.js con el nombre de archivo sqs_changingvisibility.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
. Recibir el mensaje de la cola
Al recibir el mensaje de la cola, cree un objeto JSON que contenga los parámetros necesarios para configurar el tiempo de espera, como la dirección URL de la cola que contiene el mensaje, el ReceiptHandle
que se devuelve cuando el mensaje se recibe y el nuevo tiempo de espera en segundos. Llame al 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node sqs_changingvisibility.js
Este código de ejemplo se puede encontrar aquí en GitHub