Pergunta 36 de 50
O Kafka possui DLQ nativa?
Pergunta
"O Kafka tem um mecanismo nativo de DLQ, como o SQS tem?"
O que o entrevistador quer avaliar
Essa é uma pegadinha frequente e reveladora — testa se o candidato assume, por analogia com SQS, que Kafka tem DLQ "de fábrica".
Resposta rápida
Não. Diferente do SQS, que tem DLQ integrada nativamente à fila, o Kafka não tem nenhum recurso nativo de dead-lettering. Uma "DLQ" no Kafka é, na prática, apenas um tópico comum — a lógica de publicar mensagens problemáticas nele é responsabilidade da aplicação ou de um framework.
Resposta nível Sênior
O SQS tem um atributo de configuração nativo (RedrivePolicy) que a AWS gerencia internamente. O Kafka não
tem equivalente — o "tópico de DLQ" é uma convenção arquitetural, não um recurso da plataforma: você cria um
tópico normal (por exemplo, <topico>.DLT) e implementa a lógica de publicar nele quando as tentativas de
retry se esgotam. O Spring Kafka facilita isso com o DeadLetterPublishingRecoverer, que integra ao
DefaultErrorHandler e publica automaticamente no tópico de DLQ configurado — mas isso é uma abstração de
framework sobre o Kafka, não uma capacidade nativa do broker em si.
Explicação aprofundada
Veja "DLQ no Kafka: não é nativa" no Capítulo 9 e a implementação prática no Capítulo 14.
Exemplo financeiro
Um time migrando de SQS para Kafka precisa implementar explicitamente a lógica de DLQ (via
DeadLetterPublishingRecoverer ou equivalente) — não existe um parâmetro de configuração do tópico Kafka
que ative isso automaticamente, como existe no SQS.
"Claro, todo tópico Kafka pode ter uma DLQ configurada nele mesmo"
Não existe configuração de tópico que ative DLQ automaticamente. A DLQ é sempre um tópico separado, criado e alimentado por lógica explícita da aplicação ou do framework — nunca um atributo do tópico original.
Pode vir a seguir
Prováveis follow-ups: "como você implementaria uma DLQ no Kafka?" e "o que é uma Poison Pill?".
Capítulos relacionados