У меня довольно простая модель домена, включающая список тэгов Facility
. Учитывая, что я использую CQRS и шину событий для обработки событий, связанных с доменом, как вы можете обрабатывать проверку на множестве? Например, скажем, у меня есть следующее требование:
-
Facility
должно иметь уникальное имя.
Поскольку я использую в конечном итоге согласованную базу данных на стороне запроса, данные в ней не гарантируются точно в момент, когда процессы процессов обрабатывают событие.
Например, FacilityCreatedEvent
находится в очереди обработки событий базы данных запроса, ожидающей обработки и записи в базу данных. В домен, подлежащий обработке, отправляется новый CreateFacilityCommand
. Службы домена запрашивают базу данных чтения, чтобы узнать, есть ли еще один Facility
, уже зарегистрированный с этим именем, но возвращает false, поскольку CreateNewFacilityEvent
еще не обработан и не записан в хранилище. Новый CreateFacilityCommand
теперь преуспеет и выкинет еще один FacilityCreatedEvent
, который взорвется, когда процессор событий попытается записать его в базу данных и обнаружит, что еще один Facility
уже существует с этим именем.