Sobes.tech
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.