Это должно быть легко понять, но после некоторого чтения я все еще могу найти ответ.
Итак, предположим, что пользователю нужно изменить свой номер мобильного телефона, для этого у нас может быть команда как: ChangedUserMobileNumber
удерживая новый номер. Домен, ответственный за обработку команды, выполнит изменение агрегата и опубликует событие: UserMobilePhoneChanged.
В другом домене есть подписчик на это событие, который также содержит номер мобильного телефона пользователя в своей совокупности, но, согласно нашему архитектору программного обеспечения, события не могут устаревать какие-либо данные, поэтому то, что мы в конечном итоге, довольно глупо, если не сказать больше:
Домен 1 получает команду на обновление номера мобильного телефона, номер обновляется, и одно событие публикуется, также, поскольку событие не может содержать данные, обработчик команд в Домене 1 выдает еще одну команду, которая отправляется в Домен 2. Подписчик этого события тоже живет в Домене 2, тогда у нас есть сага для обработки как события, так и команды.
Что касается реализации, мы используем NServiceBus, поэтому у нас есть эта сага для обработки этих сообщений, и в ней у нас есть эта строка кода, где поле entity.IsMobilePhoneUpdated, хранящееся в сущности саги, изменяется при обработке события.
bool isReady = (entity.IsMobilePhoneUpdated && entity.MobilePhoneNumber! = null);
Фактически сага запускается как командой, так и событием, возникшим в Домене 1, и до тех пор, пока это условие не будет выполнено, сага сохраняется.
Если бы это было на мое усмотрение, я бы отправил номер мобильного телефона в самом мероприятии, я просто хочу узнать еще несколько мнений по этому поводу.
Спасибо