1
resposta

[Dúvida] [Dúvida] O que acontece com as mensagens enquanto ocorre o rebalanceamento?

Olá, tudo bem? Na aula 2, é mostrado um problema importante. Enquanto diversas mensagens estão sendo consumidas, distribuídas entre diferentes partições de um mesmo grupo, pode ser que o kafka decida fazer rebalanceamentos entre as partições. Como mostrado no vídeo, ao rodar o comando describe no console, entre 3 partições, existem 2 partições que não consumiram todas as mensagens que deveriam ter consumido. E é mencionado o conceito de commit, que eu não entendi muito bem. Não ficou claro para mim o que aconteceu com as mensagens nessa situação. As mensagens não consumidas foram perdidas, ou elas ficam em fila, aguardando serem consumidas? Ou elas foram consumidas, mas a informação de que as mensagens foram consumidas foi perdido?

1 resposta

Olá Samuel

Durante o rebalanceamento, o Kafka reorganiza quem (qual consumidor) está responsável por consumir de cada partição. Isso pode acontecer, por exemplo, quando um novo consumidor entra ou sai do grupo.

Agora vamos direto ao ponto da sua dúvida:

O que acontece com as mensagens nesse momento?

As mensagens não são perdidas.

  • O Kafka não apaga nada automaticamente. As mensagens continuam nas partições até serem consumidas e confirmadas (com o commit).

Se não houve commit, elas continuam disponíveis.

  • O commit é o que marca: “essa mensagem já foi processada com sucesso”. Se o consumidor não chegou a dar commit antes do rebalanceamento, o Kafka vai entregar a mesma mensagem novamente para outro consumidor (ou o mesmo, depois de reassociado).

Ou seja:

  • Se não houve commit: a mensagem fica em espera e será entregue de novo.
  • Se houve commit: a mensagem foi considerada consumida com sucesso e não será reenviada.

Então, no seu exemplo, as partições que "não consumiram tudo que deveriam" provavelmente não deram commit, e por isso o Kafka considera que ainda há mensagens a serem processadas.