Sobes.tech
Junior — Middle

Можете ли да објасните концепт Transactional Outbox и зашто се користи?

sobes.tech АИ

Одговор од АИ

Transactional Outbox je obrazac koji se koristi za obezbeđivanje pouzdane isporuke poruka u distribuiranim sistemima, posebno kada je potrebno garantovati konzistentnost između baze podataka i sistema razmene poruka.

Ideja je da se, prilikom izvršavanja poslovne operacije koja menja podatke, zajedno sa tim promenama zabeleži posebna evidencija (outbox) sa informacijama o događaju koji treba objaviti.

Nakon uspešnog potvrđivanja transakcije, poseban proces ili servis čita te evidencije iz outbox-a i šalje poruke u red ili broker poruka.

Ovo pomaže da se izbegnu problemi sa gubitkom poruka ili neslaganjem podataka, jer se zapis u outbox i promena podataka dešavaju atomarski.

Primer:

  1. U transakciji ažuriramo tabelu porudžbina i dodajemo zapis u outbox tabelu.
  2. Nakon potvrde, poseban radnik čita nove zapise iz outbox-a i objavljuje događaje u Kafka, RabbitMQ i slično.
  3. Nakon uspešnog slanja, zapis iz outbox-a se briše ili označava kao obrađen.

Na ovaj način se postiže pouzdana integracija između baze podataka i sistema razmene poruka bez gubitka podataka.