Outbox Pattern
Architecture 🔴 SeniorDefinition
Ecrit les evenements dans une table outbox dans la meme transaction que les donnees metier. Un processus separe lit et publie ces evenements.
Analogie
La boite 'courrier depart' au bureau : tu deposes ta lettre, et le facteur passe la relever plus tard.
Exemple de code
await db.transaction(async (tx) => {
await tx.insert('orders', order);
await tx.insert('outbox', {
event: 'OrderCreated', payload: order
});
});
Cas d'usage
Garantir la coherence entre l'etat local et les evenements publies en microservices.
Anti-pattern
Publier l'evenement apres le commit — si le publish echoue, l'etat est incoherent.