01
A fila morta não é um depósito, é um relatório de defeitos
O nome atrapalha. Fila de mensagens mortas soa como o lugar onde vão as coisas que já não têm conserto, e essa leitura autoriza o comportamento que produz quarenta e um mil mensagens paradas: se está morto, não precisa de ninguém olhando. Mas nenhuma mensagem chega ali por decisão de negócio. Ela chega porque o consumidor tentou processá-la, falhou o número configurado de vezes e o broker seguiu a política que alguém definiu no dia em que a fila foi criada. Cada mensagem naquele lugar é um caso em que o sistema afirmou uma coisa e entregou outra, e a fila morta é o único inventário completo dessas afirmações quebradas.
A consequência prática é que a fila morta contém informação que não existe em nenhum outro lugar do sistema. O log tem a exceção mas raramente tem o payload completo, e quando tem, ele já foi rotacionado. A métrica tem o contador mas perdeu a identidade da mensagem. O rastreamento distribuído tem o caminho mas quase nunca sobrevive à amostragem, porque justamente as requisições com erro são as que a amostragem por taxa fixa descarta com a mesma probabilidade das outras. A mensagem morta é o único artefato que preserva ao mesmo tempo o dado de entrada e o fato de que o processamento falhou, e é por isso que descartá-la sem análise é apagar a evidência do defeito junto com o sintoma.
Há um segundo efeito que é mais silencioso e mais caro. A mensagem que vai para a fila morta some do cálculo de sucesso do consumidor. O consumidor que tentou três vezes, falhou e roteou a mensagem terminou o trabalho dele com êxito do ponto de vista do broker: ele confirmou o recebimento e seguiu para a próxima. Do ponto de vista do painel, aquela unidade de trabalho não é um erro, é uma conclusão. É assim que um sistema com dois por cento de falha real reporta zero vírgula três por cento e passa quatorze meses sendo considerado saudável por todo mundo que olha o gráfico.
O QUE O PAINEL MEDE
entrada 100k --> [consumidor] --+--> sucesso 99.7k --> "99.7% de sucesso"
|
+--> erro 300 --> taxa de erro 0.3%
|
+--> 3 falhas -> DLQ 2.0k (nao entra em nenhum dos dois)
^
|
invisivel para o SLO,
visivel para o cliente
O QUE O CLIENTE MEDE
entrada 100k --> resultado esperado 97.7k
resultado ausente 2.3k --> 2.3% de falha real
(300 erros + 2000 na DLQ)A correção de instrumentação é de uma linha e vale mais do que qualquer painel novo: a taxa de sucesso do consumidor precisa contar a mensagem roteada para a fila morta como falha, e não como conclusão. Isso normalmente significa emitir a métrica de resultado no ponto em que a decisão de roteamento é tomada, e não no ponto em que o broker recebe a confirmação. Enquanto essa contagem não mudar, todo o resto deste artigo é opcional, porque ninguém vai priorizar a análise de uma fila que o painel afirma não existir.