Tiempo de espera de SQS visibilidad de Amazon - 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.

Tiempo de espera de SQS visibilidad de Amazon

Cuando un consumidor recibe un mensaje de una SQS cola de Amazon, el mensaje permanece en la cola pero pasa a ser invisible temporalmente para los demás consumidores. Esta invisibilidad temporal se controla mediante el tiempo de espera de visibilidad, un mecanismo que impide que otros consumidores procesen el mismo mensaje mientras están trabajando en él. Amazon SQS no elimina automáticamente el mensaje; en su lugar, el consumidor debe eliminar el mensaje de forma explícita mediante la DeleteMessage acción una vez que se haya procesado correctamente.

Gráfico cronológico que muestra cómo se procesan las solicitudes durante el tiempo de espera de visibilidad

Configuración del tiempo de espera de visibilidad

El tiempo de espera de visibilidad en Amazon SQS comienza en cuanto se devuelve un mensaje a un consumidor. Durante este tiempo, se espera que el consumidor procese y elimine el mensaje. Sin embargo, si el consumidor no elimina el mensaje antes de que expire el tiempo de espera de visibilidad, el mensaje volverá a estar visible en la cola y otro consumidor podrá recuperarlo.

Cada SQS cola de Amazon tiene un tiempo de espera de visibilidad predeterminado de 30 segundos, pero puedes ajustar esta configuración en función de las necesidades de tu aplicación. Por lo general, es mejor configurar el tiempo de espera de visibilidad para que coincida con el tiempo máximo que necesita tu aplicación para procesar y eliminar un mensaje. También puedes configurar un tiempo de espera de visibilidad específico para los mensajes individuales sin cambiar el tiempo de espera general de la cola.

Mensajes y cuotas durante el vuelo

En AmazonSQS, los mensajes durante el vuelo son aquellos que un consumidor ha recibido de una cola pero que aún no se han eliminado. En el caso de las colas estándar, existe un límite en el número de mensajes durante el vuelo, que puede ser de un máximo de aproximadamente 120 000, en función del tráfico de las colas y de la acumulación de mensajes.

  • Sondeo breve: si se alcanza este límite mientras se utiliza un sondeo corto, Amazon SQS devolverá un OverLimit error que indica que no se pueden recibir mensajes adicionales hasta que se eliminen algunos mensajes durante el vuelo.

  • Sondeo prolongado: si utilizas un sondeo prolongado, Amazon SQS no devuelve ningún error cuando se alcanza el límite de mensajes durante el vuelo. En su lugar, no devolverá ningún mensaje nuevo hasta que el número de mensajes durante el vuelo caiga por debajo del límite.

Para gestionar los mensajes durante el vuelo de forma eficaz y evitar que se alcance esta cuota, sigue estos pasos:

  1. Eliminación inmediata: asegúrese de que los mensajes se eliminen tan pronto como se procesen correctamente para reducir el número de mensajes en vuelo.

  2. Supervise con CloudWatch: utilice Amazon CloudWatch para controlar la cantidad de mensajes durante el vuelo y configurar alarmas que le avisen cuando se acerque al límite.

  3. Distribuya la carga: considere aumentar el número de colas si está procesando un gran volumen de mensajes, para distribuir la carga y evitar cuellos de botella.

  4. Solicita un aumento de cuota: si es necesario, envía una solicitud de soporte a AWS para aumentar la cuota de mensajes durante el vuelo para su solicitud.

Comprenda el tiempo de espera de visibilidad en las colas estándar y en las colas FIFO

El tiempo de espera de visibilidad en Amazon SQS gestiona el procesamiento de los mensajes tanto en los estándares como en FIFO las colas para evitar el procesamiento duplicado y mantener el orden de los mensajes.

  • Colas estándar: en las colas estándar, el tiempo de espera de visibilidad ayuda a evitar que varios consumidores procesen el mismo mensaje simultáneamente. Sin embargo, debido al modelo de entrega de Amazon al menos una vezSQS, no hay ninguna garantía absoluta de que un mensaje no se entregue más de una vez durante el período de tiempo de espera de visibilidad.

  • FIFOcolas: en las colas FIFO (primero en entrar, primero en salir), el tiempo de espera de visibilidad garantiza que los mensajes con el mismo ID de grupo de mensajes se procesen en el orden correcto. Si un consumidor no elimina un mensaje antes de que expire el tiempo de espera de visibilidad, no se entregarán nuevos mensajes con el mismo ID de grupo hasta que el mensaje vuelva a ser visible o se elimine. En el FIFO caso de las colas, es especialmente importante gestionar cuidadosamente el tiempo de espera de visibilidad para mantener el orden de los mensajes y la integridad del procesamiento.

¿Qué ocurre si un consumidor no procesa un mensaje

Si un consumidor no procesa un mensaje (debido a problemas como errores de aplicación, bloqueos o problemas de conectividad) y no lo elimina antes de que caduque el tiempo de espera de visibilidad, el mensaje vuelve a estar visible automáticamente en la cola. Una vez visible, el mensaje puede ser recuperado por el mismo consumidor o por otro consumidor para volver a procesarlo. Este proceso garantiza que los mensajes no se pierdan aunque se produzca un error en el procesamiento inicial.

Sin embargo, es importante tener en cuenta que si el tiempo de espera de visibilidad es demasiado alto, se retrasará la reaparición de los mensajes sin procesar, lo que podría ralentizar los reintentos. Establecer un tiempo de espera de visibilidad adecuado en función del tiempo de procesamiento esperado es crucial para gestionar los mensajes a tiempo.

Cambiar y terminar el tiempo de espera de visibilidad

Cambia o finaliza el tiempo de espera de visibilidad en Amazon SQS mediante la ChangeMessageVisibility acción para gestionar el procesamiento de mensajes según tus necesidades.

  • Cambiar el tiempo de espera: si el tiempo de espera de visibilidad inicial es insuficiente, puedes ajustarlo mediante la acción. ChangeMessageVisibility Esta acción le permite acortar o extender el tiempo de espera en función de sus necesidades de procesamiento.

  • Finalización del tiempo de espera: si decide no procesar un mensaje recibido, puede finalizar su tiempo de espera de visibilidad configurándolo en 0 segundos VisibilityTimeout a lo largo de la acción. ChangeMessageVisibility Esto hace que el mensaje esté inmediatamente disponible para que otros consumidores lo procesen.

Prácticas recomendadas

Utiliza las siguientes prácticas recomendadas para gestionar los tiempos de espera de visibilidad en AmazonSQS, incluida la configuración, el ajuste y la ampliación de los tiempos de espera, así como la gestión de los mensajes no procesados mediante colas de cartas muertas (). DLQs

  • Configurar y ajustar el tiempo de espera. Comience por configurar el tiempo de espera de visibilidad para que coincida con el tiempo máximo que su aplicación normalmente necesita para procesar y eliminar un mensaje. Si no está seguro del tiempo de procesamiento exacto, comience con un tiempo de espera más corto (por ejemplo, 2 minutos) y amplíelo según sea necesario. Puede implementar un mecanismo de latido para extender periódicamente el tiempo de espera de visibilidad y garantizar que el mensaje permanezca invisible hasta que se complete el procesamiento. Esto minimiza las demoras en el reprocesamiento de los mensajes no gestionados y evita una visibilidad prematura.

  • Ampliar el tiempo de espera y gestionar el límite de 12 horas. Si el tiempo de procesamiento varía o puede superar el tiempo de espera establecido inicialmente, utilice la ChangeMessageVisibility acción para extender el tiempo de espera de visibilidad mientras se procesa el mensaje. Tenga en cuenta que el tiempo de espera de visibilidad tiene un límite máximo de 12 horas a partir de la recepción del mensaje por primera vez. Extender el tiempo de espera no restablece este límite de 12 horas. Si su procesamiento requiere más tiempo que este límite, considere usar AWS Step Functions o dividir la tarea en pasos más pequeños.

    En la práctica, establecer inmediatamente el tiempo de espera de visibilidad en el límite total de 12 horas puede fallar si hay un retraso entre la recepción del mensaje y la actualización del tiempo de espera. Para evitarlo, utilice un valor ligeramente inferior, como 43.195 segundos.

  • Gestión de mensajes sin procesar Para gestionar los mensajes que fallan en varios intentos de procesamiento, configure una cola de mensajes sin procesar (). DLQ Esto garantiza que los mensajes que no se puedan procesar tras varios reintentos se capturen por separado para su posterior análisis o tratamiento, lo que evita que circulen repetidamente en la cola principal.