Distributed Systems Playground

Una cola de mensajes que puedes romper a propósito. Cambia el número de consumidores, la tasa de fallos y el visibility timeout, y mira qué pasa con cada mensaje.

Simulation ModeCorre completamente en tu navegador. Ninguna petición a AWS: todos los números de esta página los calcula el simulador.

Escenarios

Qué observar: Un mensaje solo sale de la cola cuando el consumer lo borra (DeleteMessage). Recibir no es lo mismo que consumir.

Velocidad

Lista para iniciar.

Flujo de los mensajes0 enviados, 0 disponibles en la cola, 0 en proceso, 0 invisibles esperando reintento, 0 completados, 0 en la DLQ.SendMessageReceiveMessagefalló: no se borraDeleteMessagemaxReceiveCountProducerAmazon SQS · StandardInvisiblesConsumer 1Consumer 2ProcesadosDead-letter queue

Leyenda

  • Primer intento
  • Recibido de nuevo (número = recepciones)
  • Poison message
  • Copia entregada por duplicado
  • Aún en proceso con el receipt handle vencido

Configuración

Tipo de fallo

Registra cada mensaje procesado e ignora los repetidos.

Seed 7

La misma seed siempre produce la misma ejecución.

Métricas del simulador

Tiempo simulado
0,0 s
Enviados
0
Disponibles
0
En proceso
0
Esperando reintento
0
Completados
0
Intentos
0
Fallos
0
En la DLQ
0
Throughput
0,0 msg/s
Tiempo medio
0,0 s
Efectos duplicados
0
Duplicados ignorados
0

Eventos

Todavía no hay eventos.

Estado de cada mensaje
MensajeEstadoRecepcionesEfectos aplicados
M01En el producer00
M02En el producer00
M03En el producer00
M04En el producer00
M05En el producer00
M06En el producer00
M07En el producer00
M08En el producer00

Qué muestra esta simulación

  • At-least-once

    SQS Standard garantiza que cada mensaje se entrega al menos una vez, no exactamente una vez. Los duplicados son raros, pero el consumer tiene que tolerarlos.

  • Orden no garantizado

    En una cola Standard el orden es best-effort. Con varios consumers y reintentos, el orden de finalización se aleja aún más del de envío. Si el orden importa, la opción es una cola FIFO, con otros límites.

  • Visibility timeout

    Recibir oculta el mensaje durante un tiempo. Si el consumer no lo borra en ese intervalo, por fallo, bloqueo o lentitud, vuelve a estar visible y se entrega de nuevo.

  • Dead-letter queue

    Cada recepción suma 1 al receive count. Cuando supera el maxReceiveCount de la redrive policy, SQS mueve el mensaje a la DLQ en lugar de entregarlo otra vez.

  • Idempotencia

    Un consumer idempotente produce el mismo resultado si el mismo mensaje llega dos veces. Aquí registra el id de cada mensaje procesado e ignora las repeticiones.

  • Concurrencia

    Más consumers aumentan el throughput mientras haya mensajes disponibles. También aumentan la contención en recursos compartidos y la probabilidad de procesar duplicados al mismo tiempo.

Simplificaciones deliberadas

  • No reproduce la planificación interna de AWS: tiempos, orden y duplicados siguen reglas simples y una seed.
  • Cada consumer recibe un mensaje a la vez. La Lambda real recibe lotes de hasta 10.
  • Un mensaje va a la DLQ en cuanto reaparece con el límite alcanzado. SQS lo hace en el siguiente intento de recepción.
  • Las copias duplicadas no se vuelven a entregar si fallan.
  • El visibility timeout es fijo: ningún consumer lo extiende y no hay backoff entre intentos.

AWS Live Mode

Existe una versión real de este experimento: API Gateway, una Lambda que produce mensajes, una cola SQS Standard con DLQ y una Lambda consumer con respuestas parciales de lote. Corre en mi cuenta de AWS, por eso está restringida al área de administración, con límites de mensajes y de ejecuciones por día.

  1. API Gateway (ruta autenticada) → Lambda producer → SendMessageBatch
  2. Cola SQS Standard → event source mapping → Lambda consumer
  3. Fallo: el mensaje vuelve con retraso; tras 3 recepciones va a la DLQ
  4. Estado de cada mensaje en DynamoDB, seguido por polling

Esta página nunca llama a AWS. El modo real requiere iniciar sesión como administrador.