Senior
Aké úlohy ste vykonávali s Kafka? Ako ste nastavili záruky doručenia (exactly-once)?
sobes.tech AI
Odpoveď od AI
Kafka sa zvyčajne používa na riešenie úloh organizácie spoľahlivého a škálovateľného prenosu správ medzi mikroservismi, spracovania udalostí v reálnom čase a budovania systémov s vysokou priepustnosťou.
Na konfiguráciu záruky doručenia exactly-once boli použité nasledujúce prístupy:
- Aktivácia podpory transakcií v Kafka Produceri na zabezpečenie atómického odosielania správ.
- Použitie idempotentného producenta (enable.idempotence=true) na zabránenie duplikácie správ.
- Na strane spotrebiteľa aplikovať spracovanie s ukladaním offsetov v rámci transakcií, aby sa zabezpečilo, že každá správa bude spracovaná iba raz.
Príklad konfigurácie producenta v Go s použitím knižnice sarama:
config := sarama.NewConfig()
config.Producer.Idempotent = true
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Transaction.ID = "my-transactional-id"
producer, err := sarama.NewSyncProducer(brokers, config)
if err != nil {
panic(err)
}
// Začatie transakcie
producer.BeginTxn()
// Odoslanie správ
producer.SendMessage(&sarama.ProducerMessage{Topic: "topic", Value: sarama.StringEncoder("message")})
// Potvrdenie transakcie
producer.CommitTxn()
Týmto spôsobom sa dosiahne semantika exactly-once pri práci s Kafka.