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.
El proceso de desduplicación en las colas FIFO está sujeto a limitación temporal. Al diseñar la aplicación, asegúrese de que tanto el productor como el consumidor puedan recuperarse de las interrupciones en los clientes o en la red sin introducir duplicados ni errores de procesamiento.
Consideraciones sobre el productor
-
Amazon SQS aplica un plazo de deduplicación de 5 minutos.
-
Si un productor vuelve a intentar una
SendMessage
solicitud transcurridos 5 minutos, Amazon SQS la trata como un mensaje nuevo, lo que podría crear duplicados.
Consideraciones de los consumidores
-
Si un consumidor no procesa un mensaje antes de que caduque el tiempo de espera de visibilidad, es posible que otro consumidor lo reciba y procese, lo que provocará una duplicación del procesamiento.
-
Ajusta el tiempo de espera de visibilidad en función del tiempo de procesamiento de tu solicitud.
-
Usa la
ChangeMessageVisibility
API para extender el tiempo de espera mientras se está procesando un mensaje. -
Si un mensaje no se procesa repetidamente, diríjalo a una cola de mensajes sin procesar (DLQ) en lugar de permitir que se vuelva a procesar indefinidamente.
-
El productor debe estar al tanto del intervalo de desduplicación de la cola. Amazon SQS tiene un intervalo mínimo de desduplicación de cinco minutos. El reintento de solicitudes
SendMessage
después de que finalice el intervalo de desduplicación puede introducir mensajes duplicados en la cola. Por ejemplo, un dispositivo móvil en un automóvil envía mensajes cuyo orden es importante. Si el automóvil pierde la conectividad móvil durante un periodo de tiempo antes de recibir un reconocimiento, el reintento de la solicitud después de recuperar la conectividad móvil puede crear un duplicado. -
El consumidor debe tener un tiempo de espera de visibilidad que minimice el riesgo de no poder procesar los mensajes antes de que finalice el tiempo de espera de visibilidad. Para ampliar el tiempo de espera de visibilidad mientras se procesan los mensajes, llame a la acción
ChangeMessageVisibility
. Sin embargo, si el tiempo de espera de visibilidad finaliza, otro consumidor puede comenzar inmediatamente a procesar los mensajes, lo que hará que un mensaje se procese varias veces. Para evitar esta situación, configure una cola de mensajes fallidos.