Envío y recepción de mensajes 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.

Envío y recepción de mensajes en Amazon SQS

JavaScript code example that applies to Node.js execution

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

  • Cómo enviar mensajes en una cola.

  • Cómo recibir mensajes en una cola.

  • Cómo eliminar mensajes de una cola.

El escenario

En este ejemplo, se utilizan una serie de módulos de Node.js para enviar y recibir mensajes. Los módulos de Node.js usan el SDK para JavaScript para enviar y recibir mensajes mediante estos métodos delAWS.SQSclase de cliente:

Para obtener más información acerca de los mensajes de Amazon SQS, consulte.Envío de un mensaje a una cola de Amazon SQSyRecepción y eliminación de mensajes de una cola de Amazon SQSen laGuía para desarrolladores de Amazon Simple Queue Service.

Tareas previas necesarias

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

Envío de un mensaje a una cola

Cree un módulo de Node.js con el nombre de archivo sqs_sendmessage.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 su mensaje y que incluya la dirección URL de la cola a la que desea enviar este mensaje. En este ejemplo, el mensaje proporciona detalles (título, autor y número de semanas en la lista) sobre un libro de una lista de libros más vendidos de ficción.

Llame al método sendMessage. La devolución de llamada devuelve el ID único del mensaje.

// Load the AWS SDK for Node.js var AWS = require('aws-sdk'); // Set the region AWS.config.update({region: 'REGION'}); // Create an SQS service object var sqs = new AWS.SQS({apiVersion: '2012-11-05'}); var params = { // Remove DelaySeconds parameter and value for FIFO queues DelaySeconds: 10, MessageAttributes: { "Title": { DataType: "String", StringValue: "The Whistler" }, "Author": { DataType: "String", StringValue: "John Grisham" }, "WeeksOn": { DataType: "Number", StringValue: "6" } }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues QueueUrl: "SQS_QUEUE_URL" }; sqs.sendMessage(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.MessageId); } });

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

node sqs_sendmessage.js

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

Recepción y eliminación de mensajes de una cola

Cree un módulo de Node.js con el nombre de archivo sqs_receivemessage.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 su mensaje y que incluya la dirección URL de donde desee recibir mensajes. En este ejemplo, los parámetros especifican la recepción de todos los atributos de mensajes, así como la recepción de un máximo de 10 mensajes.

Llame al método receiveMessage. La devolución de llamada devuelve una matriz de objetos de Message desde la que puede recuperar el ReceiptHandle de cada mensaje que puede utilizar más adelante para eliminar dicho mensaje. Cree otro objeto JSON que contenga los parámetros necesarios para eliminar el mensaje, que son la dirección URL de la cola y el valor de ReceiptHandle. Llame al método deleteMessage para eliminar el mensaje que ha recibido.

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

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

node sqs_receivemessage.js

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