Distributed Systems Playground

Uma fila de mensagens que você pode quebrar de propósito. Mude o número de consumidores, a taxa de falhas e o visibility timeout e veja o que acontece com cada mensagem.

Simulation ModeRoda inteiramente no seu navegador. Nenhuma requisição à AWS: todos os números desta página são calculados pelo simulador.

Cenários

O que observar: Uma mensagem só sai da fila quando o consumer a apaga (DeleteMessage). Receber não é o mesmo que consumir.

Velocidade

Pronta para iniciar.

Fluxo das mensagens0 enviadas, 0 disponíveis na fila, 0 em processamento, 0 invisíveis aguardando retry, 0 concluídas, 0 na DLQ.SendMessageReceiveMessagefalhou: não apagaDeleteMessagemaxReceiveCountProducerAmazon SQS · StandardInvisíveisConsumer 1Consumer 2ProcessadasDead-letter queue

Legenda

  • Primeira tentativa
  • Recebida de novo (número = recebimentos)
  • Poison message
  • Cópia entregue em duplicidade
  • Ainda em processamento com receipt handle expirado

Configuração

Tipo de falha

Registra cada mensagem processada e ignora as repetidas.

Seed 7

A mesma seed sempre produz a mesma execução.

Métricas do simulador

Tempo simulado
0,0 s
Enviadas
0
Disponíveis
0
Em processamento
0
Aguardando retry
0
Concluídas
0
Tentativas
0
Falhas
0
Na DLQ
0
Throughput
0,0 msg/s
Tempo médio
0,0 s
Efeitos duplicados
0
Duplicatas ignoradas
0

Eventos

Nenhum evento ainda.

Estado de cada mensagem
MensagemEstadoRecebimentosEfeitos aplicados
M01No producer00
M02No producer00
M03No producer00
M04No producer00
M05No producer00
M06No producer00
M07No producer00
M08No producer00

O que esta simulação mostra

  • At-least-once

    O SQS Standard garante que cada mensagem é entregue pelo menos uma vez, não exatamente uma vez. Duplicatas são raras, mas o consumer precisa tolerá-las.

  • Ordem não garantida

    Na fila Standard a ordem é best-effort. Com vários consumers e retries, a ordem de conclusão se distancia ainda mais da ordem de envio. Se a ordem importa, a opção é uma fila FIFO, com outros limites.

  • Visibility timeout

    Receber esconde a mensagem por um tempo. Se o consumer não a apagar nesse intervalo, por falha, travamento ou lentidão, ela volta a ficar visível e é entregue de novo.

  • Dead-letter queue

    Cada recebimento soma 1 ao receive count. Quando ele passa do maxReceiveCount da redrive policy, o SQS move a mensagem para a DLQ em vez de entregá-la de novo.

  • Idempotência

    Um consumer idempotente produz o mesmo resultado se a mesma mensagem chegar duas vezes. Aqui ele registra o id de cada mensagem processada e ignora repetições.

  • Concorrência

    Mais consumers aumentam o throughput enquanto houver mensagens disponíveis. Também aumentam a disputa por recursos compartilhados e a chance de processar duplicatas ao mesmo tempo.

Simplificações deliberadas

  • Não é uma reprodução do escalonamento interno da AWS: tempos, ordem e duplicatas seguem regras simples e uma seed.
  • Cada consumer recebe uma mensagem por vez. A Lambda real recebe lotes de até 10.
  • A mensagem vai para a DLQ assim que reaparece com o limite atingido. No SQS isso acontece na próxima tentativa de recebimento.
  • Cópias duplicadas não são reenviadas se falharem.
  • O visibility timeout é fixo: nenhum consumer o estende, e não há backoff entre tentativas.

AWS Live Mode

Existe uma versão real deste experimento: API Gateway, uma Lambda que produz mensagens, uma fila SQS Standard com DLQ e uma Lambda consumer com respostas parciais de lote. Ela roda na minha conta AWS, por isso fica restrita à área administrativa, com limites de mensagens e execuções por dia.

  1. API Gateway (rota autenticada) → Lambda producer → SendMessageBatch
  2. Fila SQS Standard → event source mapping → Lambda consumer
  3. Falha: a mensagem volta com atraso; após 3 recebimentos, vai para a DLQ
  4. Estado de cada mensagem no DynamoDB, acompanhado por polling

Esta página nunca chama a AWS. O modo real exige login de administrador.