OUTBOX-PATTERN
Pattern Outbox — table dédiée 'outbox' dans la même base que les données métier, écrite atomiquement, puis publiée vers un bus de messages par un poller externe pour garantir l'atomicité.
Définition
Le pattern Outbox résout le problème dual-write : on veut écrire un changement métier ET publier un event correspondant. Outbox fait les deux dans la même transaction DB ; un poller (CDC Debezium ou job custom) lit la table outbox et publie sur Kafka/RabbitMQ.
Origine
Pattern documenté par Chris Richardson sur microservices.io (2017). Implémenté massivement avec Debezium (Outbox Event Router transform) depuis 2019.
Usage
Une réception EDI met à jour : INSERT INTO invoice(...) ; INSERT INTO outbox(event_type='InvoiceReceived', payload=...). Un job Debezium lit la table outbox et publie sur Kafka. En cas de crash, la transaction est atomique ; sinon, à coup sûr ré-essayée.
Termes liés
- Inbox pattern — pendant entrant.
- Event sourcing — famille.
- Idempotency — propriété requise.
- Kafka — publication cible.