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

Los siguientes conceptos pueden ayudarle a comprender mejor el envío de mensajes a FIFO y su recepción.

Envío de mensajes

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

En las colas de FIFO, los mensajes se ordenan según el ID del grupo de mensajes. Si varios hosts (o diferentes hilos del 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 en que se envían y reciben los mensajes, cada productor debe utilizar un identificador de grupo de mensajes único para enviar todos sus mensajes.

La lógica de cola FIFO solo se aplica a cada ID de grupo de mensajes. Cada ID de grupo de mensajes representa un grupo de mensajes ordenado distinto 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 solo grupo de mensajes ordenados, proporcione el mismo ID de grupo de mensajes para los mensajes enviados a la cola de FIFO.

Recepción de mensajes

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

Al recibir mensajes de una cola FIFO con varios ID de grupo de mensajes, Amazon SQS primero intenta devolver tantos mensajes con 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 recibes un mensaje con un identificador de grupo de mensajes, no se devuelven más mensajes con el mismo ID de grupo de mensajes, a menos que elimines el mensaje o 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 conservan 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 10 mensajes, pero aún en orden FIFO.

Varios reintentos

Las colas FIFO permiten al productor o al consumidor intentar varios intentos:

  • Si el productor detecta unaSendMessage acción fallida, puede volver a intentar enviarla tantas veces como sea necesario con el mismo identificador de deduplicación del mensaje. Suponiendo que el productor reciba al menos un acuse de recibo antes de que venza el intervalo de deduplicación, los reintentos múltiples no afectarán al orden de los mensajes ni introducirán duplicados.

  • Si el consumidor detecta unaReceiveMessage acción fallida, puede volver a intentarlo tantas veces como sea necesario con el mismo ID de intento de solicitud de recepción. Suponiendo que el consumidor reciba al menos un acuse de recibo antes de que venza el tiempo de espera de visibilidad, los intentos múltiples no afectarán al orden de los mensajes.

  • Cuando recibes un mensaje con un identificador de grupo de mensajes, no se devuelven más mensajes con el mismo ID de grupo de mensajes, a menos que elimines el mensaje o se haga visible.