Перейти к содержанию

Порождение и публикация событий

Шаблон порождение событий сохраняет агрегат в виде событий, из которых заетм восстанавливает текущее состояние. Этот подход можно использовать в качестве механизма надежной публикации событий.
В главе 3 описаны механизмы для публикации сообщений в рамках транзакции: опрашивание и отслеживание транзакционного жургала. При использовании порождения событий можно воспользоваться одним из этих способов. Основное отличие в том, что в таблице EVENTS событий хранятся постоянно, а не временно, как в случае с таблицей OUTBOX.

Публикация с помощью опрашивания

Если для хранения используется таблица EVENTS, издатель может ее опрашивать на предмет новых записей. Самое сложное — определить, какие из событий новые. Если eventId возрастает монотонно, то, кажется, можно просто записывать последнее значение eventId. Однако, порядок фиксации транзакций может не совпасть с порядком, в котором они генерируют события. Тогда некоторые события могут быть пропущены издателем.
Pasted image 20210928205301.png
Одно из решений проблемы состоит в добавлении столбца в таблицу EVENTS, который отслеживает публикацию событий. Тогда издатель мог бы выбирать неопубликованные события, публиковать их и помечать как опубликованные.

Публикация с помощью отслеживания транзакционного журнала

В силу природы транзакционного журнала издателю достаточно после каждой публикации событий записывать смещение в файле журнала, на котором произошла очередная публикация.


Последнее обновление : 25 мая 2023 г.
Дата создания : 29 июля 2022 г.

Комментарии

Комментарии