Idempotent Consumer
DevOps 🔴 SeniorDefinition
Pattern garantissant qu'un message traité plusieurs fois produit le même résultat. Essentiel avec les systèmes at-least-once delivery.
Analogie
Appuyer 10 fois sur le bouton d'un ascenseur ne l'appelle pas 10 fois.
Exemple de code
async function processPayment(msg) {
const exists = await db.findOne({ idempotencyKey: msg.id });
if (exists) return; // déjà traité
await db.insert({ idempotencyKey: msg.id });
await chargeCustomer(msg.data);
}
Cas d'usage
Éviter les doubles paiements ou doubles envois dans un système distribué.
Anti-pattern
Pas de clé d'idempotence : un retry crée un doublon (double facturation).