Pergunta 31 de 50
O que é Replay?
Pergunta
"O que é Replay no Kafka?"
O que o entrevistador quer avaliar
Se você conecta replay a um caso de uso real (não só a definição técnica) e entende sua dependência da retenção.
Resposta rápida
Replay é mover a posição de leitura de um Consumer Group para um ponto anterior no log, reprocessando eventos que já haviam sido consumidos — ou lendo pela primeira vez eventos antigos, no caso de um Consumer Group novo.
Resposta nível Sênior
Tecnicamente, replay é resetar o offset commitado de um Consumer Group (via kafka-consumer-groups.sh ou
ferramenta equivalente) e deixar o consumer avançar normalmente a partir dali. Os três usos mais comuns:
corrigir um bug de processamento (corrigir o código e reprocessar o intervalo afetado), popular um sistema
novo com histórico existente (um Consumer Group novo lendo desde o início da retenção), e reconstruir um
estado derivado, como um índice de busca. O requisito não óbvio é que replay só funciona dentro da janela de
retenção — e que, em produção, exige que o consumer seja idempotente, porque ele vai reprocessar eventos
que já geraram efeitos colaterais na primeira vez.
Explicação aprofundada
Veja "Replay: reprocessando o que já foi lido" no Capítulo 8.
Exemplo financeiro
Um bug no extrato-service gerou lançamentos incorretos nos últimos 3 dias. Depois de corrigir o bug, o
time reseta o offset do Consumer Group para 3 dias atrás — o serviço reconstrói os lançamentos corretamente,
assumindo que a operação seja idempotente (um upsert por lançamento, não um incremento).
"Replay é só resetar o offset, sem mais consequências"
Resetar o offset é a parte fácil. Replay reprocessa eventos que já geraram efeitos colaterais na primeira vez — se o consumer não for idempotente, ele duplica esses efeitos (notificações, créditos, e-mails).
Pode vir a seguir
Prováveis follow-ups: "como o Kafka consegue reler mensagens já consumidas?" e "qual a diferença entre Replay e SQS DLQ Redrive?".
Capítulos relacionados