INBOX-PATTERN
Pattern Inbox — symétrique de Outbox côté consommateur, table 'inbox' indexée par event_id qui garantit l'idempotence du traitement d'un événement reçu.
Définition
Le pattern Inbox garantit qu'un message consommé est traité exactement une fois côté consommateur. Avant traitement : SELECT FROM inbox WHERE event_id = ? FOR UPDATE. Si présent → no-op. Sinon INSERT INTO inbox + faire le travail métier dans la même transaction.
Origine
Pattern documenté avec Outbox sur microservices.io. Largement utilisé en CQRS/event sourcing dans la communauté .NET (Wolverine, NServiceBus) depuis 2020.
Usage
Un consommateur EDI reçoit un event 'InvoiceReceived' de Kafka. Code : (1) BEGIN TX, (2) try INSERT INTO inbox(event_id) → si unique violation = doublon → COMMIT, return, (3) sinon : appliquer changement métier (INSERT INTO invoice), COMMIT. Doublon Kafka : inoffensif.
Termes liés
- Outbox pattern — pendant sortant.
- Idempotency — propriété ciblée.
- Kafka — source events.
- Event sourcing — famille.