Sobes.tech
Senior

O que são garantias de entrega no Kafka?

sobes.tech IA

Resposta da IA

As garantias de entrega no Kafka descrevem exatamente como as mensagens são entregues do produtor ao broker e do broker ao consumidor. Os principais níveis de garantia:

  1. No máximo uma vez (at most once) — a mensagem pode ser perdida, mas não será duplicada. Usado quando a velocidade é importante e a perda de dados é aceitável.

  2. Pelo menos uma vez (at least once) — a mensagem é entregue garantidamente, mas pode ser duplicada. Este é o modo padrão de operação do Kafka.

  3. Exatamente uma vez (exactly once) — a mensagem é entregue e processada exatamente uma vez, sem duplicados. No Kafka, isso é alcançado com produtores idempotentes e transações.

Para implementar exatamente uma vez nos clientes Kafka em Go, é necessário usar suporte para idempotência e transações, se a biblioteca permitir.

Exemplo de configuração de um produtor com idempotência (pseudo-código):

producer, _ := kafka.NewProducer(&kafka.ConfigMap{
    "bootstrap.servers": "localhost",
    "enable.idempotence": true, // garante exactly-once
})