Pular para o conteúdo principal

Pergunta 40 de 50

O que é Exactly Once?

SêniorTech Lead

Pergunta

"O que é Exactly Once no Kafka? Ele elimina de vez o problema de duplicidade?"

O que o entrevistador quer avaliar

A pegadinha mais importante desta seção do livro — testa se o candidato entende o escopo exato dessa garantia, não apenas seu nome.

Resposta rápida

Exactly Once significa que a mensagem é processada exatamente uma vez, sem perda nem duplicação — via producer idempotente e transações. Mas essa garantia cobre o fluxo Kafka-para-Kafka; qualquer efeito colateral fora do Kafka (banco de dados, chamada HTTP, e-mail) continua exigindo idempotência própria.

Resposta nível Sênior

Exactly-once semantics (EOS) do Kafka usa producer idempotente (enable.idempotence=true, que evita duplicação causada por retries automáticos do próprio producer) combinado com transações (KafkaTransactionManager), garantindo que ler de um tópico, processar, e escrever em outro tópico aconteça como uma unidade atômica. Isso é real e funciona — mas só dentro do ecossistema Kafka. No momento em que o processamento inclui uma escrita em um banco de dados externo ou uma chamada a uma API, essa escrita fica fora da transação Kafka, e uma falha exatamente ali ainda pode gerar duplicidade desse efeito externo. Por isso, mesmo usando exactly-once semantics, sistemas que integram Kafka com bancos e APIs externas continuam precisando de idempotência nessas integrações.

Explicação aprofundada

Veja "Exactly Once: o que ela cobre e o que não cobre" no Capítulo 10.

Exemplo financeiro

Um consumer que lê de um tópico, transforma o dado e escreve em outro tópico Kafka pode usar exactly-once semantics com segurança total. Mas se esse mesmo consumer também grava o resultado em um banco relacional, essa escrita específica continua exigindo uma checagem de idempotência própria (Capítulo 11) — o exactly-once do Kafka não a protege.

"Exactly Once significa que a mensagem nunca é processada duas vezes, ponto final"

Essa é a resposta que reprova em entrevistas sênior. A garantia é real, mas delimitada ao fluxo interno do Kafka via transações — não a efeitos colaterais externos, que são o caso mais comum em sistemas reais.

Pode vir a seguir

Prováveis follow-ups: "o que é Idempotência?" e "como evitar processamento duplicado numa integração com banco de dados externo?".

Capítulos relacionados