Middle+
O Kafka garante a entrega de mensagens? Pode o Kafka perder uma mensagem se o produtor não receber um erro?
sobes.tech IA
Resposta da IA
O Kafka garante a entrega de mensagens, mas com certas condições e configurações.
Por padrão, o Kafka suporta três níveis de entrega:
- No máximo uma vez — as mensagens podem ser perdidas se o produtor não receber confirmação.
- Pelo menos uma vez — as mensagens não se perdem, mas podem ser duplicadas.
- Exatamente uma vez — configuração complexa que garante entrega sem perdas e sem duplicados.
Se o produtor não receber erro, isso significa que a mensagem foi aceita pelo broker e registrada no log, portanto, a perda é improvável. No entanto, se o produtor não receber confirmação devido a problemas de rede, a mensagem pode ser reenviada, o que causará duplicados.
Exemplo de configuração do produtor em Go com confirmações:
producer, err := sarama.NewSyncProducer(brokers, &sarama.Config{
Producer: sarama.ProducerConfig{
RequiredAcks: sarama.WaitForAll, // esperar confirmação de todas as réplicas
Retry: sarama.ProducerRetry{
Max: 5,
},
},
})
Assim, o Kafka não perde mensagens com uma configuração e tratamento de erros corretos, mas é importante gerenciar corretamente as confirmações e erros no lado do produtor.