Transactional Outbox
Boîte de sortie transactionnelle
Une boîte d'envoi transactionnelle enregistre un changement de données et un enregistrement de message dans une seule transaction de base de données locale. Un relais envoie le message enregistré après la validation de la transaction.
local transaction(business row + outbox row) -> relay/CDC -> broker -> idempotent consumerorders✓order_2048outbox✓evt_784local transaction(business row + outbox row) -> relay/CDC -> broker -> idempotent consumerJOBUn autre exemple
Le passage en caisse enregistre la commande `984` et l'événement de boîte d'envoi `OrderCreated:984` dans une seule transaction. Un relais publie l'événement plus tard. S'il s'arrête après l'envoi mais avant de marquer la ligne, il peut envoyer à nouveau. Le consommateur supprime le doublon grâce à l'ID de l'événement.
Parties principales
- 01changement de données métier
- 02ligne d'événement dans la boîte d'envoi
- 03Une transaction locale
- 04Relai ou flux de changements
- 05publication de courtier
- 06Consommateur sûr contre les doublons
Utilisez-le lorsque
Utilisez-le lorsqu'un changement de base de données engagé doit conduire de manière fiable à un message ou à un événement. Gardez la boîte d'envoi dans la même transaction et faites fonctionner le relais comme son propre processus fiable.
Ne l'utilisez pas lorsque
N'appelez pas cela une livraison unique ou une transaction unique à travers les services. Prévoyez des événements répétés, leur ordre, le délai de relais, le nettoyage et la gestion sécurisée des doublons.
Nom utilisé dans le code
local transaction(business row + outbox row) -> relay/CDC -> broker -> idempotent consumer Avant d'expédier
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome: Complete the task with Boîte de sortie transactionnelle (Transactional Outbox). User context: Le passage en caisse enregistre la commande `984` et l'événement de boîte d'envoi `OrderCreated:984` dans une seule transaction. Un relais publie l'événement plus tard. S'il s'arrête après l'envoi mais avant de marquer la ligne, il peut envoyer à nouveau. Le consommateur supprime le doublon grâce à l'ID de l'événement. Technical concept or control: Boîte de sortie transactionnelle (Transactional Outbox). Why it fits: Utilisez-le lorsqu'un changement de base de données engagé doit conduire de manière fiable à un message ou à un événement. Gardez la boîte d'envoi dans la même transaction et faites fonctionner le relais comme son propre processus fiable. Do not use it when: N'appelez pas cela une livraison unique ou une transaction unique à travers les services. Prévoyez des événements répétés, leur ordre, le délai de relais, le nettoyage et la gestion sécurisée des doublons. Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary): Aucun standard officiel unique ne régit l’ensemble du terme. Sa signification peut varier selon les équipes, plateformes ou frameworks. Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
Vérifiez cette demande
Review how Boîte de sortie transactionnelle (Transactional Outbox) is used now. Definition: Une boîte d'envoi transactionnelle enregistre un changement de données et un enregistrement de message dans une seule transaction de base de données locale. Un relais envoie le message enregistré après la validation de la transaction. Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.