Sondeo corto y largo 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.

Sondeo corto y largo de Amazon SQS

Amazon SQS proporciona sondeo corto y sondeo largo para recibir mensajes de una cola. De forma predeterminada, las colas usan sondeo corto.

consondeo corto, elReceiveMessageconsulta únicamente un subconjunto de servidores (basado en una distribución aleatoria ponderada) para buscar mensajes que están disponibles para incluir en la respuesta. Amazon SQS envía la respuesta de inmediato, incluso si la consulta no ha encontrado ningún mensaje.

consondeo largo, elReceiveMessagesolicita consulta a todos los servidores para buscar mensajes. Amazon SQS envía una respuesta después de recopilar al menos un mensaje disponible, hasta el número máximo de mensajes especificado en la solicitud. Amazon SQS envía una respuesta vacía solo si caduca el tiempo de espera de la encuesta.

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

Consumo de mensajes mediante sondeo corto

Cuando se consumen mensajes de una cola mediante sondeo corto, Amazon SQS muestrea un subconjunto de sus servidores (en función de una distribución aleatoria ponderada) y devuelve mensajes solo 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 sondeo corto (estándar)

Consumo de mensajes mediante sondeo largo

Cuando el tiempo de espera delReceiveMessageLa acción de la API es mayor que 0,sondeo largoestá en vigor. El tiempo máximo de espera de sondeo largo 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 unReceiveMessagesolicitud) 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 acerca de cómo habilitar el sondeo largo para una cola nueva o existente mediante la consola de Amazon SQS, consulte elConfiguración de los parámetros de cola (consola). Para obtener las prácticas recomendadas, consulte Configuración del sondeo largo.

El sondeo largo ofrece los siguientes beneficios:

  • Reduzca 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 casos excepcionales, es posible que recibas respuestas vacías incluso cuando una cola sigue conteniendo mensajes, especialmente si especificas un valor bajo para elReceiveMessageWaitTimeSecondsparámetro.

  • Reduzca las respuestas vacías falsa al consultar todos los servidores de Amazon SQS (en lugar de un subconjunto de ellos).

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

Para obtener información acerca de cómo confirmar que una cola está vacía, consulteConfirmación de que una cola 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.