Uso del ID de desduplicación de mensajes 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.

Uso del ID de desduplicación de mensajes de Amazon SQS

El ID de desduplicación de mensajes es el token utilizado para la desduplicación de los mensajes enviados. Si un mensaje con un ID de desduplicación de mensajes concreto se envía correctamente, todos los mensajes enviados con el mismo ID de desduplicación de mensajes se aceptan correctamente pero no se entregan durante el intervalo de desduplicación de 5 minutos.

nota

Amazon SQS sigue realizando un seguimiento del ID de desduplicación del mensaje incluso después de haberlo recibido y eliminado.

Proporcionar el ID de desduplicación de mensajes

El productor debe proporcionar los valores de ID de desduplicación de mensajes para cada mensaje en los siguientes escenarios:

  • Mensajes enviados con cuerpos idénticos que Amazon SQS debe tratar como únicos.

  • Mensajes enviados con contenido idéntico pero atributos diferentes que Amazon SQS debe tratar como únicos.

  • Mensajes enviados con contenido diferente (por ejemplo, los recuentos de reintentos están incluidos en el cuerpo del mensaje) que Amazon SQS debe tratar como duplicados.

Habilitación de la desduplicación para un sistema de un solo productor y un solo consumidor

Si tiene un único productor y un único consumidor y los mensajes son exclusivos porque se incluye un ID de mensaje específico de la aplicación en el cuerpo del mensaje, siga estas prácticas recomendadas:

  • Habilite la desduplicación basada en el contenido para la cola (cada uno de sus mensajes tiene un cuerpo único). El productor puede omitir el ID de desduplicación de mensajes.

  • Aunque no es necesario que el consumidor proporcione un ID de intento de solicitud de recepción para cada solicitud, es recomendable hacerlo porque permite que las secuencias de reintento tras un error se ejecuten con mayor rapidez.

  • Puede reintentar las solicitudes de envío o recepción, ya que no interfieren con la ordenación de los mensajes en las colas FIFO.

Diseño para situaciones de recuperación de interrupciones

El proceso de desduplicación en las colas FIFO está sujeto a limitación temporal. Al diseñar una aplicación, asegúrese de que tanto el productor como el consumidor puedan recuperarse en caso de que se produzca una interrupción del cliente o de la red.

  • 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.

Uso de tiempos de espera de visibilidad

Para disfrutar de un rendimiento óptimo, establezca un tiempo de espera de visibilidad que sea mayor que el tiempo de espera de lectura del SDK de AWS. Hágalo cuando utilice la acción ReceiveMessage de la API tanto con sondeos cortos como con sondeos largos.