Sobes.tech
Junior — Middle

Můžete vysvětlit koncept Transaction Outbox a jeho použití?

sobes.tech AI

Odpověď od AI

Transaction Outbox — je vzor používaný k zajištění spoľahlivého prenosu udalostí alebo správ z databázy do iných systémov, najmä v architektúre mikroslužieb.

Ideou je, že pri zmene údajov v databáze a potrebe odoslať udalosť (napríklad do fronty správ), sa tieto operácie vykonávajú v rámci jednej transakcie. Namiesto priameho odoslania správy je udalosť zaznamenaná v špeciálnej tabuľke nazvanej "outbox".

Po úspešnom potvrdení transakcie číta samostatný proces alebo služba záznamy z tabuľky outbox a odosiela ich do príslušného systému (napríklad Kafka, RabbitMQ). Tým je zabezpečené, že udalosť nebude stratená a nebude odoslaná dvakrát.

Príklad použitia:

  1. V službe sa aktualizuje objednávka a súčasne sa do tabuľky outbox zaznamená udalosť "OrderUpdated".
  2. Transakcia sa potvrdí — údaje a udalosť sa ukladajú atomicky.
  3. Samostatný worker číta z outbox a publikuje udalosť do fronty.

Týmto spôsobom sa dosahuje konzistencia medzi databázou a systémom výmeny správ bez distribuovaných transakcií.