Outbox Pattern
Architecture 🔴 SeniorDéfinition
Écrit les evenements dans une table outbox dans la même transaction que les données métier. Un processus sépare lit et publie ces evenements.
Analogie
La boite 'courrier départ' 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 cohérence entre l'état local et les evenements publies en microservices.
Anti-pattern
Publier l'evenement après le commit — si le publish échoué, l'état est incohérent.