Event sourcing

Event sourcing - паттерн, который говорит, что:

  1. нужно создать History таблицу (Event Store в которой сервис сохраняет события)
  2. создать обработчиков событий (Events)
  3. если ваш сервис отправляет куда-то данные, то вы создаете поставщика событий (Supplier-а)

Преимущества работы с событиями:

  1. надежную публикацию доменных событий;
  2. сохранение истории изменений агрегата;
  3. отсутствие большинства проблем, связанных с объектно-реляционным разрывом;
  4. машину времени для разработчиков.

Очень важно: обработчик событий должен быть идемпотентным (обнаруживая и отклоняя повторяющиеся сообщения), т.к. если он неидемпотентный, то повторяющиеся события приводят к некорректным результатам. Например, обработчик, который не поддерживает идемпотентность будет инкрементировать баланс на банковском счету. Обработчики должны обнаруживать и отклонять дубликаты.

History таблица

Имеет обычно приблизительно такую структуру:

Пример реализации »


10.09.2021 21:22