Agrupación de mensajes de Amazon SNS para temas FIFO - Amazon Simple Notification Service

Agrupación de mensajes de Amazon SNS para temas FIFO

Los mensajes que pertenecen al mismo grupo se procesan uno por uno, en un orden estricto relativo al grupo.

Al publicar mensajes en un tema de FIFO de Amazon SNS, debe establecerse el ID del grupo de mensajes. El ID de grupo es un token obligatorio con el que se especifica que un mensaje pertenece a un grupo de mensajes específico. El tema de SNS FIFO pasa el ID de grupo a las colas FIFO de Amazon SQS suscritas. No hay límite para la cantidad de ID de grupo en temas de SNS FIFO o colas FIFO de SQS. El ID del grupo de mensajes no se transfiere a las colas estándar de Amazon SQS.

No hay afinidad entre un grupo de mensajes y una suscripción. Por lo tanto, los mensajes que se publican en cualquier grupo de mensajes se entregan a todas las colas suscritas, sujeto a las políticas de filtro adjuntas a las suscripciones. Para obtener más información, consulte Entrega de mensajes de Amazon SNS para temas FIFO y Filtrado de mensajes de Amazon SNS para temas FIFO.

En el caso de uso de ejemplo de administración de precios de partes de automóviles, hay un grupo de mensajes dedicado para cada producto vendido en la plataforma. El mismo tema FIFO de Amazon SNS se utiliza para procesar todas las actualizaciones de precios. La secuencia de actualizaciones de precios se conserva en el contexto de un solo producto de partes de automóviles, pero no en varios productos. En el siguiente diagrama, se muestra cómo funciona. Observe que, para el producto cuyo ID de grupo de mensajes es product-214, el mensaje m1 se procesa antes que m4. Esta secuencia se conserva a lo largo de los flujos de trabajo, desde FIFO de Amazon SNS a FIFO de Amazon SQS. De igual modo, para el producto cuyo ID de grupo de mensajes es product-799, el mensaje m2 se procesa antes que m3. No obstante, al utilizar las colas estándar de Amazon SQS, el orden de los mensajes ya no está garantizado y los grupos de mensajes no existen. Los grupos de mensajes product-214 y product-799 son independientes entre sí, por lo que no hay relación entre cómo se secuencian sus mensajes.

Ejemplo de cómo funcionan la ordenación y la desduplicación de mensajes en un escenario de temas FIFO de Amazon SNS en el que se utilizan diferentes Servicios de AWS e identificadores de grupos de mensajes. Muestra el flujo de mensajes desde las funciones de Lambda a través de un tema FIFO de Amazon SNS hasta varios tipos de colas de Amazon SQS (FIFO y estándar), manteniendo un orden estricto en las colas FIFO y demostrando el posible desorden en las colas estándar. Esta configuración se utiliza para enfatizar la importancia de la secuenciación de mensajes en aplicaciones como las actualizaciones de precios en una plataforma de comercio electrónico, haciendo especial hincapié en cómo cada grupo de mensajes mantiene su orden independientemente de los distintos servicios del consumidor.

Distribución de datos por ID de grupos de mensajes para mejorar el rendimiento

Para optimizar el rendimiento de la entrega, los temas FIFO de Amazon SNS entregan mensajes de diferentes grupos de mensajes en paralelo, mientras que el orden de los mensajes se mantiene estrictamente dentro de cada grupo de mensajes. Cada grupo de mensajes individual puede entregar un máximo de 300 mensajes por segundo. Por lo tanto, para lograr un alto rendimiento para un solo tema, utilice una gran cantidad de ID de grupos de mensajes distintos. Al utilizar un conjunto diverso de grupos de mensajes, los temas FIFO de Amazon SNS distribuyen automáticamente los mensajes entre un mayor número de particiones paralelas.

nota

Los temas FIFO de Amazon SNS están optimizados para una distribución uniforme de los mensajes entre los ID de los grupos de mensajes, independientemente del número de grupos. AWS recomienda utilizar un gran número de ID de grupos de mensajes distintos para optimizar el rendimiento.

Al publicar en el tema FIFO de Amazon SNS con un rendimiento alto y una o más colas FIFO de Amazon SQS estén suscritas, se recomienda que habilite el rendimiento alto en las colas. Para obtener más información, consulte Rendimiento alto de las colas FIFO en la Guía para desarrolladores de Amazon Simple Queue Service.