Lógica de entrega FIFO - 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.

Lógica de entrega FIFO

Los siguientes conceptos puede ayudarlo a entender mejor cómo se envían y reciben mensajes desde FIFO.

Enviar mensajes

Si se envían varios mensajes de forma sucesiva a una cola FIFO, cada uno de ellos con un ID de desduplicación de mensajes distinto, Amazon SQS almacena los mensajes y reconoce la transmisión. A continuación, se puede recibir y procesar cada mensaje en el mismo orden en que se transmitieron.

En las colas FIFO, los mensajes se ordenan en función del ID de grupo de mensajes. Si varios hosts (o diferentes subprocesos en el mismo host) envían mensajes con el mismo ID de grupo de mensajes a una cola FIFO, Amazon SQS almacena los mensajes en el orden en que llegan para su procesamiento. Para asegurarse de que Amazon SQS conserva el orden de envío y recepción de los mensajes, cada productor debe utilizar un ID de grupo de mensajes único para enviar todos sus mensajes.

La lógica de las colas FIFO se aplica únicamente por ID de grupo de mensajes. Cada ID de grupo de mensajes representa un grupo de mensajes con una ordenación distinta dentro de una cola de Amazon SQS. Para cada ID de grupo de mensajes, todos los mensajes se envían y reciben por riguroso orden. No obstante, es posible que los mensajes con diferentes valores de ID de grupo de mensajes no se envíen y reciban en orden. Debe asociar un ID de grupo de mensajes al mensaje. Si no proporciona un ID de grupo de mensajes, la acción da error. Si necesita un único grupo de mensajes ordenados, proporcione el mismo ID de grupo de mensajes para los mensajes enviados a la cola FIFO.

Recepción de mensajes

No puede solicitar la recepción de mensajes con un ID de grupo de mensajes específico.

Cuando se reciben mensajes de una cola FIFO con varios ID de grupo de mensajes, Amazon SQS intenta primero devolver el máximo número de mensajes que tienen el mismo ID de grupo de mensajes como sea posible. Esto permite que otros consumidores procesen los mensajes que tienen un ID de grupo de mensajes diferente. Cuando reciba un mensaje con un ID de grupo de mensajes, no se devolverán más mensajes para el mismo ID de grupo de mensajes a menos que elimine el mensaje o este se haga visible.

nota

Es posible recibir hasta 10 mensajes en una sola llamada mediante el parámetro de solicitud MaxNumberOfMessages de la acción ReceiveMessage de la Estos mensajes retienen su orden FIFO y pueden tener el mismo ID de grupo de mensajes. Por lo tanto, si hay menos de 10 mensajes disponibles con el mismo ID de grupo de mensajes, es posible que reciba mensajes de otro ID de grupo de mensajes en el mismo lote de diez mensajes, pero aun así en orden FIFO.

Varios reintentos

Las colas FIFO permiten al productor o al consumidor efectuar múltiples reintentos:

  • Si el productor detecta una acción SendMessage con error, puede reintentar el envío tantas veces como sea necesario, mediante el mismo ID de desduplicación de mensajes. Si se supone que el productor recibe al menos un acuse de recibo antes de que caduque el intervalo de desduplicación, los múltiples reintentos no afectan al orden de los mensajes ni generan duplicados.

  • Si el consumidor detecta una acción ReceiveMessage con error, puede volver a intentarlo tantas veces como sea necesario, mediante el mismo ID de intento de solicitud de recepción. Si se supone que el consumidor recibe al menos un acuse de recibo antes de que caduque el tiempo de visibilidad, los múltiples reintentos no afectan al orden de los mensajes.

  • Cuando reciba un mensaje con un ID de grupo de mensajes, no se devolverán más mensajes para el mismo ID de grupo de mensajes a menos que elimine el mensaje o este se haga visible.