Я пытаюсь реализовать свою собственную инфраструктуру CQRS с помощью Event Sourcing, чтобы узнать ее лучше. В качестве примера проекта я использую механизм блога, я знаю, что это может быть не совсем здорово, но я просто хочу работать над чем-то реальным.Проверка уникальности при использовании CQRS и источника событий
Проблема, к которой я пришел сейчас, - это проверка. Каждый пост имеет shortUrl
, а shortUrl
должен быть уникальным, но где я должен помещать эту проверку в домен? Я знаю, что у меня будет эта проверка, прежде чем я даже отправлю команду, читая из моего магазина чтения, чтобы проверить, действительно ли это при создании команды создания сообщения или команды обновления.
Я могу думать о двух «решениях».
- У вас есть совокупность
Blog
, в которой содержатся следы всех настроек, связанных с блогами, а также ссылки на все сообщения. Но проблема с этим в моих глазах заключается в том, что я должен обрабатывать связь между агрегатами в этом сценарии, а также каждый раз, когда мне нужно проверить уникальностьshortUrl
. Мне нужно прочитать все события из хранилища событий, чтобы создать все сообщения и это кажется сложным. - Второй вариант, который у меня есть, - это когда событие срабатывает, а мой обработчик событий, который создает модель чтения, запускает повторяющееся короткое событие url, когда он замечает, что у него будут два коротких URL-адреса, указывающие на разные сообщения. Действительно ли, чтобы считываемая модель срабатывала при обнаружении ошибок?
Есть ли еще альтернативы. Обратите внимание, что я знаю, что мой домен может быть не лучшим образом подходит для cqrs и DDD, но я делаю это, чтобы учиться в небольшом домене.
См. Http://stackoverflow.com/questions/2916899/how-to-handle-set-based-consistency-validation-in-cqrs –