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