но доменные события.
Во внешние системы я отправляю не доменные события, а интеграционные события.
Интеграционные события испускают доменные хендлеры.
В привычном нам обновление стейта я могу писать в доменные события все что угодно, что участвует в бизнес операции
Допустим это event sourcing, и там доменные события строятся на aggregate_event, которые содержит в себе только те данные, которые нужны для восставноления стейта.
Возникает вопрос:
Могу ли я в хендлере подгружать read model к примеру по ID агрегата из доменного события для построения более богатого наполнения integration event?
ты изначально хотел собирать жирный интеграционный ивент в рид модели, так вот интеграционное событие должно быть еще более тонкое нежели большинство доменных как писал фесор: "По дефолту ивенты которые у тебя между модулями гуляют вообще не должны содержать ничего кроме айдишки времени и может быть какой мета инфы. Все остальное - получил ивент сходи. Ивенты часть контрактов, больше данных в ивенте - сложнее и менее стабильные контракты."
Я хотел собирать интеграционный на основе каких то данных, которых нет в aggregate event. В итоге интеграционник будет выбрасывать результирующий эвент после построения новой рид модель.
а что мешает слушателю этого интеграционного события достать недостающие данные?
По остальному ок. Тонкие контракты. Я и не стремился к жирным контрактам между модулями. Я сталкивался с ситуациями, когда aggregate event не содержит некоторых данных для внешней системы. Не знаю где тут ошибка... Ошибка в проектировании агрегата... Или же реальная проблема, которая решается, как уже сказали выше эвентом на основе перестройки рид модели.
Обсуждают сегодня