La leçon de Kafka que personne ne vous enseigne jusqu'à ce qu'un client soit facturé deux fois

DEV - 24/05
TL;DR : Kafka garantit une livraison au moins une fois, ce qui signifie que votre consommateur recevra parfois le...

TL;DR : Kafka garantit une livraison au moins une fois, ce qui signifie que votre consommateur recevra parfois deux fois le même événement. Si le traitement de cet événement a des effets secondaires comme la facturation ou l'envoi d'e-mails, vous devez rendre le consommateur idempotent. Voici le modèle qui l'a corrigé pour nous.

Je veux commencer par le bug parce que le bug est tout le problème.

Un client a ouvert un ticket d'assistance indiquant qu'il avait deux factures identiques pour la même commande. Même montant. Mêmes éléments de campagne. Créé à quatre secondes d'intervalle. Personne dans l’équipe n’avait touché à cette commande manuellement.

Nous l'avons retracé jusqu'à l'un de nos microservices Rust. Il avait redémarré en cours de traitement d'un lot d'événements. Quand il revint, Kafka restitua les événements dont il n'était pas sûr qu'ils soient terminés. Notre consommateur de facturation a traité ces événements une deuxième fois. Deux factures.

Rien n’a été cassé au sens où nous l’entendons habituellement. Aucune exception. Aucun travail échoué. Le système ...
[Courte citation de 8% de l'article original]

Loading...