Я пытаюсь реализовать свою собственную инфраструктуру CQRS с помощью Event Sourcing, чтобы узнать ее лучше. В качестве образца проекта я реализую механизм блога, я знаю, что это может быть не совсем идеально, но я просто хочу работать над чем-то реальным.
Проблема, к которой я пришел сейчас, - это проверка. Каждый пост имеет shortUrl
, а shortUrl
должен быть уникальным, но где я должен помещать эту проверку в домен? Я знаю, что у меня будет эта проверка, прежде чем я даже отправлю команду, читая из моего магазина чтения, чтобы проверить, действительно ли это при создании команды создания сообщения или команды обновления после.
Я могу думать о двух "решениях".
- У вас есть агрегат
Blog
, который отслеживает все настройки, связанные с блогами, а также ссылки на все сообщения. Но проблема с этим в моих глазах заключается в том, что я должен обрабатывать связь между агрегатами в этом сценарии, а также каждый раз, когда мне нужно проверить уникальностьshortUrl
Мне нужно прочитать все события из хранилища событий, чтобы создать все сообщения, и это кажется сложным. - Второй вариант, который у меня есть, - это когда событие запускается, и мой обработчик событий, который создает модель чтения, запускает дубликат короткого URL-сообщения, когда он замечает, что у него будут два коротких URL-адреса, указывающие на разные сообщения. Действительно ли, чтобы считываемая модель срабатывала при обнаружении ошибок?
Есть ли еще альтернативы. Заметьте, что я знаю, что мой домен может быть не лучшим образом подходит для cqrs и DDD, но я делаю это, чтобы учиться в небольшом домене.