Sobes.tech
Junior — Middle

Qual mecanismo de garantia de entrega de mensagens foi utilizado no Kafka no seu emprego anterior?

sobes.tech IA

Resposta da IA

No Kafka, as garantias de entrega de mensagens são asseguradas através da configuração dos parâmetros do produtor e do consumidor, bem como do mecanismo de confirmações (acks) e do gerenciamento de deslocamentos (offsets).

Principais mecanismos:

  • acks — parâmetro do produtor que determina quantas réplicas devem confirmar a gravação da mensagem. Valores:

    • 0 — não esperar confirmação (baixa fiabilidade)
    • 1 — esperar confirmação do líder
    • all (ou -1) — esperar confirmação de todas as ISR (réplicas sincronizadas), garantindo máxima fiabilidade
  • Repetições e idempotência — o produtor pode tentar reenviar mensagens em caso de erros, e a idempotência evita duplicados.

  • Confirmação de deslocamentos (offset commit) — o consumidor, após processar as mensagens, realiza um commit dos deslocamentos para garantir que as mensagens não sejam processadas novamente.

Na prática, para garantir uma entrega "pelo menos uma vez", usa-se acks=all e um produtor idempotente, e para "exatamente uma vez" configura-se opções adicionais e gerencia-se a nível de aplicação.

Exemplo de configuração do produtor em Go (usando sarama):

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)

Assim, o mecanismo de garantia de entrega é uma combinação de confirmações, replicação e gerenciamento de deslocamentos.