Configuración de sondeos prolongados en 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.

Configuración de sondeos prolongados en Amazon SQS

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 más información, consulte Sondeos cortos y largos de Amazon SQS.

Para obtener un procesamiento óptimo de los mensajes, utilice las siguientes estrategias:

  • En la mayoría de los casos, puede establecer el tiempo de espera de ReceiveMessage en 20 segundos. Si 20 segundos es demasiado tiempo para su aplicación, establezca un tiempo de espera de ReceiveMessage más corto (1 segundo como mínimo). Si no utiliza un AWS SDK para acceder a Amazon SQS o si configura un AWS SDK para que tenga un tiempo de espera más corto, es posible que tenga que modificar su cliente de Amazon SQS para permitir solicitudes más largas o utilizar un tiempo de espera más corto para sondeos prolongados.

  • Si implementa el sondeo largo para varias colas, utilice un subproceso para cada cola en lugar de un solo subproceso para todas las colas. El uso de un único subproceso para cada cola permite que la aplicación procese los mensajes de cada una de las colas en cuanto estén disponibles, mientras que el uso de un único subproceso para sondear varias colas podría impedir que su aplicación procesara los mensajes disponibles en otras colas mientras la aplicación espera (hasta 20 segundos) para la cola que no tiene ningún mensaje disponible.

importante

Para evitar errores HTTP, asegúrese de que el tiempo de espera de respuesta HTTP de las solicitudes ReceiveMessage sea mayor que el parámetro WaitTimeSeconds. Para obtener más información, consulte. ReceiveMessage