Pergunta 34 de 50
O que é Retry?
Pergunta
"O que é Retry no contexto de processamento de mensagens Kafka?"
O que o entrevistador quer avaliar
Se você diferencia erro transitório de permanente — a base para saber quando retry ajuda e quando é desperdício de tentativas.
Resposta rápida
Retry é tentar processar novamente uma mensagem que falhou, na expectativa de que o erro seja transitório (timeout de rede, banco momentaneamente indisponível). Geralmente combinado com backoff — um intervalo crescente entre tentativas — para não sobrecarregar um sistema já instável.
Resposta nível Sênior
Retry só faz sentido para erros transitórios — falhas com chance real de não se repetir em uma nova tentativa. Para erros permanentes (payload malformado, regra de negócio que sempre rejeita aquele dado), retry é inútil: vai falhar da mesma forma indefinidamente, a menos que exista um limite de tentativas, depois do qual a mensagem segue para uma DLQ. No Kafka, a implementação mais robusta usa um tópico de retry dedicado — a mensagem que falha é republicada nele com um cabeçalho indicando quantas tentativas já ocorreram, e um listener separado a reprocessa após o backoff, sem bloquear o tópico principal (evitando o efeito poison pill).
Explicação aprofundada
Veja "Retry e Backoff" e "Retry Topic" no Capítulo 9.
Exemplo financeiro
Se o saldo-service falha ao processar um evento porque o banco está momentaneamente indisponível, o Spring
Kafka reprocessa com backoff de 1s, 5s e 30s antes de considerar a mensagem não recuperável e encaminhá-la
para a DLQ.
"Retry resolve qualquer tipo de erro, basta tentar mais vezes"
Retry só resolve erros transitórios. Para um erro permanente (ex.: payload que nunca vai desserializar corretamente), tentar de novo indefinidamente só atrasa a detecção do problema real e pode travar o processamento de mensagens seguintes.
Pode vir a seguir
Prováveis follow-ups: "o que é DLQ?" e "o que é uma Poison Pill?".
Capítulos relacionados