Pular para o conteúdo principal

Pergunta 3 de 50

Kafka é uma fila?

PlenoSêniorTech Lead

Pergunta

"Kafka é basicamente uma fila de mensagens, só que mais rápida?"

O que o entrevistador quer avaliar

É praticamente um teste de superficialidade. Quem responde "sim, mais ou menos" costuma não ter internalizado a diferença entre distribuir trabalho e compartilhar fatos — e essa distinção aparece de novo em quase toda pergunta seguinte da entrevista.

Resposta rápida

Não estruturalmente. Uma fila tradicional remove a mensagem depois que ela é processada — ela existe para ser entregue a um único consumidor e desaparecer. No Kafka, o evento continua no log depois de lido, até expirar pela política de retenção, o que permite múltiplos consumidores independentes lerem o mesmo dado e reprocessarem o histórico quando necessário.

Resposta nível Sênior

Tecnicamente dá para usar Kafka como fila — um Consumer Group já distribui partitions entre workers, similar ao que uma fila faz. Mas reduzir o Kafka a isso ignora a metade mais importante do desenho: o mesmo evento pode ser lido por múltiplos Consumer Groups completamente independentes, sem duplicar a mensagem, e cada grupo mantém seu próprio ponto de leitura. Além disso, a mensagem não desaparece ao ser consumida — ela permanece no log até a retenção expirar, o que viabiliza replay: reprocessar um intervalo de eventos para corrigir um bug ou popular um sistema novo. Uma fila clássica (RabbitMQ, SQS) não tem esse conceito nativo.

Explicação aprofundada

Veja "Kafka não é apenas uma fila" no Capítulo 1 e a comparação completa no Capítulo 2.

Exemplo financeiro

O evento FaturaFechada pode ser lido pelo serviço de cobrança (que gera o boleto) e, meses depois, por um novo serviço de analytics que precisa reconstruir o histórico de faturas dos últimos 90 dias — bastando configurar um novo Consumer Group e resetar o offset para o início da retenção. Numa fila tradicional, esse histórico já teria sido descartado.

"Sim, é uma fila mais rápida e escalável"

Isso descreve apenas o aspecto de throughput, ignorando retenção, múltiplos consumidores independentes e replay — que são as diferenças que realmente importam em uma entrevista técnica.

Pode vir a seguir

Provável follow-up: "então quando você usaria uma fila em vez de Kafka?" e "como o Kafka consegue reler mensagens já consumidas?".

Capítulos relacionados