Idempotent Consumer

DevOps 🔴 Senior

Definition

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).
#devops#messaging#interview