

La versión 2 de AWS SDK para JavaScript ha llegado al final del soporte. Se recomienda que migre a [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalles e información adicionales sobre cómo realizar la migración, consulte este [anuncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Habilitación del sondeo largo en Amazon SQS
<a name="sqs-examples-enable-long-polling"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**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
<a name="sqs-examples-enable-long-polling-scenario"></a>

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:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#setQueueAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#setQueueAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#createQueue-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#createQueue-property)

Para obtener más información sobre el sondeo largo de Amazon SQS, consulte [Sondeo largo](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html) en la *Guía para desarrolladores de Amazon Simple Queue Service*.

## Tareas previas necesarias
<a name="sqs-examples-enable-long-polling-prerequisites"></a>

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](https://nodejs.org).
+ 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](loading-node-credentials-shared.md).

## Habilitación de un sondeo largo al crear una cola
<a name="sqs-examples-enable-long-polling-on-queue-creation"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sqs/sqs_longpolling_createqueue.js).

## Habilitar el sondeo largo en una cola existente
<a name="sqs-examples-enable-long-polling-existing-queue"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sqs/sqs_longpolling_existingqueue.js).

## Habilitar el sondeo largo al recibir un mensaje
<a name="sqs-examples-enable-long-polling-on-receive-message"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sqs/sqs_longpolling_receivemessage.js).