Помните этот пост?
Dmitriy Onykyyenko на
DOU.UA разобрал эти примеры и дал несколько своих рекомендаций. Далее цитата:
Бегло просмотрев код могу сказать, что выглядит как нерабочее решение:
— оптимистичная конкуренция в коде(ее должно поддерживать само хранилище, операция должна быть атомарной, читайте Грэга Янга),
— выброс ошибок домена сразу вызывает печаль:
throw new Exception($"Version ’{expectedVersion.Value}’ already exists for stream ’{aggregateId}’"); судя по рекомендациям в недавней статье про 150 вопросов на .net интервью автор дайджеста не прошёл был на мидла даже с таким дайджестом, либо не читаете, что постите.
— консистентность состояния системы event store, broker — оно там не консистентно(ее вообще нет), пишется в разных транзакциях и не атомарно.
Хорошие статьи на счет event sourcing и микросервисы с примерами кода, где все это продуманно и на уровне консистетности данных, расширяемости и на уровне нюансов, о которых писал Эванс
–
https://www.linkedin.com/pulse/microservice-integration-part-1-stefano-rocco/–
https://www.linkedin.com/pulse/microservices-integration-part-2-stefano-rocco/–
https://www.linkedin.com/pulse/microservices-blueprint-architecture-stefano-rocco/