Sobes.tech
Senior

Jakie gwarancje dostawy obsługujesz, mówiąc o Kafka?

sobes.tech AI

Odpowiedź od AI

W Kafka można zapewnić trzy główne poziomy gwarancji dostarczenia wiadomości:

  1. Najwyżej raz (nie więcej niż raz) — wiadomość może być dostarczona 0 lub 1 raz. Może dojść do utraty wiadomości, na przykład jeśli wystąpi awaria przed potwierdzeniem.

  2. Przynajmniej raz (przynajmniej raz) — wiadomość zostanie dostarczona gwarantowanie, ale może być dostarczona wielokrotnie (duplikaty). Osiąga się to za pomocą potwierdzeń od brokera i ponownego wysyłania w razie potrzeby.

  3. Dokładnie raz (dokładnie raz) — najbardziej rygorystyczna gwarancja, w której wiadomość jest dostarczana i przetwarzana dokładnie raz. W Kafka jest to osiągane za pomocą producentów idempotentnych i transakcji.

W Go, pracując z Kafka (np. za pomocą biblioteki sarama), można skonfigurować producenta do wysyłki idempotentnej i używać transakcji, aby zapewnić "dokładnie raz". Domyślnie najczęściej używa się "przynajmniej raz".

Przykład konfiguracji producenta idempotentnego w Go z sarama:

config := sarama.NewConfig()
config.Producer.Idempotent = true
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Retry.Max = 5

producer, err := sarama.NewSyncProducer(brokers, config)
if err != nil {
    panic(err)
}
// Następnie wysyłamy wiadomości przez producenta