Sobes.tech
Junior — Middle

Qual meccanismo di garanzia di consegna dei messaggi è stato utilizzato in Kafka nel tuo precedente lavoro?

sobes.tech AI

Risposta dell'AI

In Kafka, le garanzie di consegna dei messaggi sono assicurate tramite la configurazione dei parametri del produttore e del consumatore, nonché dal meccanismo di conferma (acks) e dalla gestione degli offset.

Principali meccanismi:

  • acks — parametro del produttore che determina quanti repliche devono confermare la scrittura del messaggio. Valori:

    • 0 — non aspettare conferma (bassa affidabilità)
    • 1 — aspettare conferma dal leader
    • all (o -1) — aspettare conferma da tutte le ISR (repliche in sync), garantendo la massima affidabilità
  • Ritardi e idempotenza — il produttore può riprovare l'invio dei messaggi in caso di errori, e l'idempotenza evita duplicati.

  • Commit degli offset — il consumatore, dopo aver elaborato i messaggi, effettua un commit degli offset per garantire che i messaggi non vengano processati più volte.

In pratica, per garantire una consegna "almeno una volta" si usa acks=all e un produttore idempotente, mentre per "esattamente una volta" si configurano opzioni aggiuntive e si gestisce a livello di applicazione.

Esempio di configurazione del produttore in Go (usando sarama):

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)

In questo modo, il meccanismo di garanzia di consegna è una combinazione di conferme, replica e gestione degli offset.