Saltar al contenido
aprendeaws.dev

Módulo 9 · Eventos, colas y mensajería/Lección 55

SQS: colas de mensajes

Una fila donde los mensajes esperan su turno. Estándar o FIFO, visibilidad y colas de mensajes fallidos.

Al terminar podrás

  • →Explicar el ciclo de vida de un mensaje en SQS
  • →Diferenciar colas estándar y FIFO
  • →Usar una cola de mensajes fallidos (DLQ)

Amazon Simple Queue Service (SQS) es una cola de mensajes administrada. Un programa deja mensajes; otro los recoge y los procesa cuando puede. No hay servidores que administrar y la cola escala sola con el volumen.

El ciclo de vida de un mensaje

  1. 1

    El productor envía

    Una aplicación llama a SendMessage. El mensaje queda guardado en la cola, replicado en varias zonas de disponibilidad.
  2. 2

    El consumidor pide

    SQS no empuja mensajes. El consumidor hace polling: llama a ReceiveMessage y recibe hasta un lote de mensajes.
  3. 3

    El mensaje se vuelve invisible

    Mientras dura el visibility timeout, ningún otro consumidor ve ese mensaje. Así dos procesos no hacen el mismo trabajo a la vez.
  4. 4

    El consumidor borra

    Al terminar, el consumidor llama a DeleteMessage. Si no lo borra, el mensaje reaparece cuando vence el tiempo de invisibilidad.
  5. 5

    Si nadie lo procesa

    El mensaje vence cuando pasa el periodo de retención y se elimina, aunque nadie lo haya leído.

El borrado explícito es la clave: SQS solo da un mensaje por terminado cuando el consumidor lo dice. Si el consumidor se cae a mitad del trabajo, el mensaje vuelve a la cola y otro lo intenta.

4 días

retención por defecto (de 1 minuto a 14 días)

30 s

visibility timeout por defecto (máximo 12 horas)

1 MiB

tamaño máximo de un mensaje

20 s

espera máxima con long polling

Fuente: Amazon SQS Developer Guide, «Amazon SQS message quotas» y referencia de ReceiveMessage, revisado en noviembre de 2026.

Long polling: preguntar sin desesperar

Con short polling, el consumidor pregunta y SQS responde de inmediato, aunque no haya mensajes. Si la cola está vacía, gastas peticiones en respuestas vacías. Con long polling, SQS espera unos segundos a que llegue algo antes de responder. Menos peticiones vacías, menos costo y menos espera para el siguiente mensaje. Úsalo casi siempre.

Estándar o FIFO

CriterioCola estándarCola FIFO
OrdenAproximado: casi siempre en orden, sin garantíaEstricto dentro de cada grupo de mensajes
EntregaAl menos una vez: un mensaje puede llegar duplicadoProcesamiento exactamente una vez: SQS elimina duplicados
RendimientoCasi ilimitadoAlto, pero con límites por segundo
NombreCualquieraDebe terminar en .fifo
Úsala paraTrabajos independientes: miniaturas, correos, procesar archivosCuando el orden importa: movimientos de una cuenta, pasos de un pedido

Con una cola estándar, tu consumidor debe ser idempotente: procesar el mismo mensaje dos veces no debe cobrar dos veces ni enviar dos correos. Una forma simple es guardar el ID de cada mensaje procesado y saltarse los repetidos.

La cola de mensajes fallidos (DLQ)

Algunos mensajes nunca se van a poder procesar: vienen mal formados o apuntan a algo que no existe. Sin control, vuelven a la cola una y otra vez, gastan recursos y estorban. Una dead-letter queue (DLQ) es otra cola de SQS a la que se mueven los mensajes después de un número máximo de intentos (maxReceiveCount).

Ahí quedan apartados para revisarlos. Cuando corriges el problema, puedes devolverlos a la cola original con la función de redrive. Pon una alarma de CloudWatch sobre la DLQ: si recibe mensajes, algo está fallando.

Y si ya tienes un broker de mensajes

Muchas aplicaciones existentes usan brokers como Apache ActiveMQ o RabbitMQ con protocolos estándar (JMS, AMQP, MQTT, STOMP). Reescribirlas para SQS lleva trabajo. Amazon MQ es un servicio administrado de esos brokers: migras sin cambiar el código de mensajería.

  • Amazon SQS

    La fila con fichas de turno

    Cola nativa de AWS, serverless, escala sola. La elección por defecto para aplicaciones nuevas.
  • Amazon MQ

    Broker administrado de ActiveMQ o RabbitMQ. Para migrar aplicaciones que ya usan esos protocolos.

Una función Lambda puede leer de SQS sin que escribas el ciclo de polling. Detalles en Lambda. Para enviar un mensaje a varias colas a la vez, sigue con SNS.

Quiz

Pon a prueba lo que aprendiste

0 de 5 correctas · 5 sin responder

  1. 1.Un consumidor recibe un mensaje de SQS, lo procesa, pero olvida borrarlo. ¿Qué pasa?

  2. 2.Una aplicación bancaria debe procesar los movimientos de cada cuenta en el orden exacto en que llegan y sin duplicados. ¿Qué usas?

  3. 3.Algunos mensajes fallan una y otra vez y bloquean recursos. ¿Qué configuras?

  4. 4.Los consumidores hacen muchas peticiones que vuelven vacías y la factura de SQS sube. ¿Qué ajustas?

  5. 5.Una empresa quiere migrar a AWS una aplicación que usa RabbitMQ sin cambiar su código de mensajería. ¿Qué servicio usa?