Sobes.tech
Junior — Middle

Czy możesz wyjaśnić koncepcję Transactional Outbox i dlaczego jest używana?

sobes.tech AI

Odpowiedź od AI

Transactional Outbox to wzorzec używany do zapewnienia niezawodnej dostawy wiadomości w systemach rozproszonych, szczególnie gdy konieczne jest zagwarantowanie spójności między bazą danych a systemem wymiany wiadomości.

Idea polega na tym, że podczas wykonywania operacji biznesowej, która zmienia dane, razem z tymi zmianami w tej samej transakcji zapisywany jest specjalny wpis (outbox) z informacją o zdarzeniu, które ma zostać opublikowane.

Po pomyślnym zatwierdzeniu transakcji, osobny proces lub serwis odczytuje te wpisy z outbox i wysyła wiadomości do kolejki lub brokera wiadomości.

To pozwala uniknąć problemów z utratą wiadomości lub rozbieżnością danych, ponieważ zapis w outbox i zmiana danych zachodzą atomowo.

Przykład:

  1. W transakcji aktualizujemy tabelę zamówień i dodajemy wpis do tabeli outbox.
  2. Po zatwierdzeniu, osobny worker odczytuje nowe wpisy z outbox i publikuje zdarzenia w Kafka, RabbitMQ itp.
  3. Po pomyślnym wysłaniu, wpis z outbox jest usuwany lub oznaczany jako przetworzony.

W ten sposób osiąga się niezawodną integrację między bazą danych a systemem wymiany wiadomości bez utraty danych.