CQRS / EventStore Идемпотентность? - PullRequest
1 голос
/ 14 марта 2012

Реализация / обработка идемпотентности в c # с Jolivers EventStore. Означает ли это просто заботиться о проверке совокупного идентификатора и версии вместе с доменом / моделью чтения перед обработкой? Или есть что-то большее, чем это?

[EDIT]

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

итак - представьте, у меня есть некоторый набор данных с данными о продукте для интернет-магазина. Я хочу начать разработку приложения с создания возможности поиска продуктов. это означает, что нужно как-то импортировать набор данных (неважно как). каждый продукт в наборе данных в конечном счете запускает (например) CreateProductCommand - эта команда проходит через домен, который запускает ProductAddedEvent, который затем обрабатывается денормализатором для заполнения ProductSearchView

Теперь - после реализации функции поиска я хочу создать подробные виды продукта. Я уже запустил импорт, чтобы получить набор данных в систему, поэтому я хочу перезапустить события, которые будут запускать денормализаторы для заполнения ProductDetailView

Имеет ли это смысл?

1 Ответ

3 голосов
/ 14 марта 2012

Что вы можете сделать, это очистить хранилище данных модели чтения и запустить все события в хранилище событий, используя те же механизмы, которые вы использовали, когда они были впервые опубликованы.

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

Используя экземпляр хранилища событий, я получаю все события с начала времени:

var commits = eventStore.Advanced.GetFrom(DateTime.MinValue).ToList();

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

Вот и все.вам нужно создать что-то, что сделает это простым для вас, потому что вам придется много делать.

...