Pular para o conteúdo principal

Pergunta 39 de 50

O que é At Least Once?

PlenoSênior

Pergunta

"O que é a garantia At Least Once, e por que ela é tão comum em sistemas financeiros?"

O que o entrevistador quer avaliar

Se você entende at-least-once não como uma garantia "quase perfeita", mas como uma escolha deliberada que exige uma contrapartida específica (idempotência) para funcionar bem em produção.

Resposta rápida

At Least Once significa que a mensagem nunca é perdida, mas pode ser entregue mais de uma vez. Acontece quando o commit (ou retry do producer) só ocorre depois que o passo anterior foi confirmado, aceitando reprocessamento em caso de falha entre a confirmação e o registro dela.

Resposta nível Sênior

É o padrão prático mais usado em sistemas financeiros porque, entre perder e duplicar, duplicar é o risco mais gerenciável: uma mensagem duplicada é detectável e corrigível com idempotência (Capítulo 11), enquanto uma mensagem perdida sequer deixa rastro. Na prática, isso significa acks=all no producer (com retry) e commit manual no consumer, feito só depois que o processamento termina com sucesso — se o consumer cair entre o fim do processamento e o commit, a mensagem é reentregue no próximo início, e é o processamento idempotente que garante que essa reentrega não duplique o efeito de negócio.

Explicação aprofundada

Veja "At Least Once" no Capítulo 10 e o padrão completo de idempotência no Capítulo 11.

Exemplo financeiro

O notificacao-service roda com At Least Once: se ele cair depois de enviar a notificação mas antes de comitar o offset, a notificação pode ser enviada duas vezes — aceitável para esse fluxo, e mitigável se necessário com uma checagem de idempotência.

"At Least Once garante que a mensagem é processada exatamente uma vez, só que com mais segurança"

Não — At Least Once explicitamente permite duplicidade. Quem precisa de processamento único de verdade precisa somar idempotência (ou usar exactly-once semantics dentro do escopo do Kafka).

Pode vir a seguir

Prováveis follow-ups: "o que é Exactly Once?" e "como evitar processamento duplicado?".

Capítulos relacionados