CQRS, ES: Как узнать, нужно ли нам переупорядочивать / игнорировать события на стороне чтения? - PullRequest
1 голос
/ 15 мая 2019

Я и моя команда в настоящее время работаем на стороне чтения CQRS и системы поиска событий. Мы хотим, чтобы наши проекторы могли слушать только подмножество всех событий, и мы хотим, чтобы наши проекторы были идемпотентными, поскольку событие можно публиковать много раз. Вот наша текущая архитектура: current architecture

Поскольку проекционист не обрабатывает все события, как он может узнать, было ли событие получено в правильном порядке или событие уже получено? Мы не можем использовать порядковый номер, потому что порядковый номер связан с потоком, а не с типом события.

Термины «проекционист», «регистр проекции» и «проектор» происходят из этой статьи .

1 Ответ

2 голосов
/ 15 мая 2019

Как узнать, нужно ли нам переупорядочивать / игнорировать события на стороне чтения?

«Шина» не является органом для порядка событий - эта ответственность лежит на хранилище событий,Таким образом, проекционист, которому необходимо знать, в каком порядке происходят вещи, должен обратиться в магазин, а не пытаться восстановить исходный порядок на основе информации на шине.

Доклад Грега Янга за 2014 год Данные Polyglot включаетхорошее обсуждение этого вопроса.

(Проекционист может запросить хранилище событий через какой-то API, а не напрямую обращаться к хранилищу - куратор потока атомов на основе данных в хранилище).

...