Это определенно возможно в Аксоне.Ключевое слово, которое нужно искать в этом случае: TrackingEventProcessor
.
* * * * * * * в Axon отвечают за технические аспекты доставки событий обработчикам событий, которые вы пишете.TrackingEventProcessor
делает это самостоятельно, получая поток событий из EventStore
.Поскольку ваше приложение может запускаться / останавливаться / приостанавливаться / и т. Д., TrackingEventProcessor
также должен быть остановлен.Следовательно, вы бы хотели, чтобы ваш TrackingEventProcessor
начинался снова с того места, где он остановился в прошлый раз.
Таким образом, он имеет для отслеживания , где он находится в отношении обработки событийиз потока событий.Это «отслеживание отключено» выполняется путем хранения TrackingToken
, который содержит индекс (и в зависимости от реализации TrackingToken
также другую информацию) последнего события.
Этот токенможет быть установлен в любой момент времени относительно вашего потока событий.Таким образом, это позволит вам запустить воспроизведение / сброс для данной модели запроса, которую она обновляет.Или, если вам нужно при каждом запуске получать исходную модель запроса, вы можете просто сохранить TrackingToken
только в памяти.Это гарантирует, что при запуске он начнет читать события с начала времени.
Для получения дополнительной информации о обработчике событий в Axon, я рекомендую справочное руководство .
Примечание: Все это отложено, однако я хотел бы отметить, что трудная часть в Event Sourcing не лежит на стороне запроса вашего приложения.Эта часть всегда гидратируется от всего потока событий.Событие, получающее командную модель, однако, совершенно другое.Для этого Axon предоставляет EventSourcingRepository
для хранения ваших агрегатов.