Sobes.tech
Junior — Middle

Quel mécanisme de garantie de livraison des messages était utilisé dans Kafka dans votre précédent emploi?

sobes.tech IA

Réponse de l'IA

En Kafka, les garanties de livraison des messages sont assurées par la configuration des paramètres du producteur et du consommateur, ainsi que par le mécanisme de confirmations (acks) et la gestion des décalages (offsets).

Principaux mécanismes :

  • acks — paramètre du producteur qui détermine combien de réplicas doivent confirmer l’écriture du message. Valeurs :

    • 0 — ne pas attendre de confirmation (fiabilité faible)
    • 1 — attendre la confirmation du leader
    • all (ou -1) — attendre la confirmation de toutes les ISR (réplicas synchrones), ce qui garantit la fiabilité maximale
  • Retraits et idempotence — le producteur peut réessayer l’envoi de messages en cas d’erreurs, et l’idempotence évite les doublons.

  • Validation des décalages (offset commit) — le consommateur, après traitement des messages, effectue un commit des décalages pour garantir que les messages ne seront pas retraités.

En pratique, pour garantir une livraison "au moins une fois", on utilise acks=all et un producteur idempotent, et pour "exactement une fois", on configure des options supplémentaires et on gère au niveau de l’application.

Exemple de configuration du producteur en Go (avec sarama) :

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

Ainsi, le mécanisme de garantie de livraison est une combinaison de confirmations, de réplication et de gestion des décalages.