Как обработать весь источник данных с помощью аксона? - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь разработать архитектуру на основе принципов CQRS.Одним из требований является возможность со временем вводить новые прогнозы для подсистемы запросов на основе существующего журнала событий.Для этого мне нужна возможность перебирать все записи событий, хранящиеся в хранилище данных.Это возможно с аксоном?

1 Ответ

0 голосов
/ 30 ноября 2018

Это определенно возможно в Аксоне.Ключевое слово, которое нужно искать в этом случае: TrackingEventProcessor.

* * * * * * * в Axon отвечают за технические аспекты доставки событий обработчикам событий, которые вы пишете.TrackingEventProcessor делает это самостоятельно, получая поток событий из EventStore.Поскольку ваше приложение может запускаться / останавливаться / приостанавливаться / и т. Д., TrackingEventProcessor также должен быть остановлен.Следовательно, вы бы хотели, чтобы ваш TrackingEventProcessor начинался снова с того места, где он остановился в прошлый раз.

Таким образом, он имеет для отслеживания , где он находится в отношении обработки событийиз потока событий.Это «отслеживание отключено» выполняется путем хранения TrackingToken, который содержит индекс (и в зависимости от реализации TrackingToken также другую информацию) последнего события.

Этот токенможет быть установлен в любой момент времени относительно вашего потока событий.Таким образом, это позволит вам запустить воспроизведение / сброс для данной модели запроса, которую она обновляет.Или, если вам нужно при каждом запуске получать исходную модель запроса, вы можете просто сохранить TrackingToken только в памяти.Это гарантирует, что при запуске он начнет читать события с начала времени.

Для получения дополнительной информации о обработчике событий в Axon, я рекомендую справочное руководство .

Примечание: Все это отложено, однако я хотел бы отметить, что трудная часть в Event Sourcing не лежит на стороне запроса вашего приложения.Эта часть всегда гидратируется от всего потока событий.Событие, получающее командную модель, однако, совершенно другое.Для этого Axon предоставляет EventSourcingRepository для хранения ваших агрегатов.

...