Sondeos cortos y largos de Amazon SQS - Amazon Simple Queue Service

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.

Sondeos cortos y largos de Amazon SQS

Amazon SQS ofrece opciones de sondeos cortos y largos para recibir mensajes de una cola. Tenga en cuenta los requisitos de capacidad de respuesta y rentabilidad de su aplicación al elegir entre estas dos opciones de sondeo:

  • Sondeo breve (predeterminado): la ReceiveMessagesolicitud consulta un subconjunto de servidores (según una distribución aleatoria ponderada) para encontrar los mensajes disponibles y envía una respuesta inmediata, incluso si no se encuentra ningún mensaje.

  • Sondeo prolongado: ReceiveMessageconsulta los mensajes en todos los servidores y envía una respuesta una vez que haya al menos un mensaje disponible, hasta el máximo especificado. Solo se envía una respuesta vacía si finaliza el tiempo de espera del sondeo. Esta opción puede reducir la cantidad de respuestas vacías y, potencialmente, reducir los costos.

En las siguientes secciones se explican los detalles de los sondeos cortos y largos.

Consumo de mensajes mediante sondeo corto

Cuando consume mensajes de una cola (FIFO o estándar) mediante sondeos cortos, Amazon SQS toma muestras de un subconjunto de sus servidores (en función de una distribución aleatoria ponderada) y devuelve los mensajes únicamente de esos servidores. Por tanto, una solicitud ReceiveMessage determinada podría no devolver todos los mensajes. Sin embargo, si tiene menos de 1 000 mensajes en la cola, una solicitud posterior devolverá sus mensajes. Si sigue consumiendo mensajes de sus colas, Amazon SQS muestrea todos sus servidores y se reciben todos los mensajes.

En el siguiente diagrama se muestra el comportamiento de sondeo corto de los mensajes devueltos de una cola estándar después de que uno de los componentes del sistema realice una solicitud de recepción. Amazon SQS muestrea varios de sus servidores (en gris) y devuelve los mensajes A, C, D y B de estos servidores. El mensaje E no se devuelve en esta solicitud concreta, pero se devuelve en una solicitud posterior.

Muestreo de mensajes mediante sondeos cortos (estándar)

Consumo de mensajes mediante sondeo largo

Cuando el tiempo de espera de la acción de la API ReceiveMessage es superior a 0, se está realizando un sondeo largo. El tiempo máximo de espera de sondeo es de 20 segundos. El sondeo largo ayuda a reducir el costo de uso de Amazon SQS al eliminar el número de respuestas vacías (cuando no hay ningún mensaje disponible para una solicitud ReceiveMessage) y las falsas respuestas vacías (cuando los mensajes están disponibles en la cola, pero no se incluyen en una respuesta). Para obtener información sobre cómo habilitar el sondeo largo para una cola nueva o existente mediante la consola de Amazon SQS, consulte Configuración de los parámetros de cola mediante la consola Amazon SQS. Para obtener las prácticas recomendadas, consulte Configuración de sondeos prolongados en Amazon SQS.

El sondeo largo ofrece los siguientes beneficios:

  • Reducción de las respuestas vacías al permitir que Amazon SQS espere hasta que haya un mensaje disponible en una cola antes de enviar una respuesta. A menos que la conexión agote el tiempo de espera, la respuesta a la solicitud ReceiveMessage contiene al menos uno de los mensajes disponibles, hasta el número máximo de mensajes especificado en la acción ReceiveMessage. En contados casos, es posible que reciba respuestas vacías incluso cuando una cola aún contenga mensajes, sobre todo si especifica un valor bajo para el parámetro ReceiveMessageWaitTimeSeconds.

  • Reduzca las falsas respuestas vacías consultando todos (en lugar de un subconjunto) los servidores de Amazon SQS.

  • Devolución de mensajes en cuanto estén disponibles.

Para obtener información sobre cómo confirmar que una cola está vacía, consulte Confirmación de que una cola de Amazon SQS está vacía.

Diferencias entre el sondeo corto y el sondeo largo

El sondeo corto se produce cuando el parámetro WaitTimeSeconds de una solicitud ReceiveMessage está establecido en 0 de una de las dos formas siguientes:

  • La llamada a ReceiveMessage establece WaitTimeSeconds en 0.

  • La llamada a ReceiveMessage no establece WaitTimeSeconds y el atributo de cola ReceiveMessageWaitTimeSeconds está establecido en 0.