Это теоретический вопрос о введении новых БК в системе используем ES и CQRS с DDD. Так что конкретных примеров не будет.
Могут возникнуть интересные проблемы при введении новых BC-ов, которые взаимодействуют со старыми, получая и публикуя события предметной области. Корень этих проблем в том, что у нас уже есть доменные события в хранилище событий. Когда новый BC реагирует на эти события старого домена, он будет делать это не синхронно и/или не по порядку.
Например, у нас есть старая БК A
, и мы вводим новую БК B
. Оба публикуют события предметной области, которые мы называем a
и b
. В новой системе важен порядок, например, b1
всегда должно стоять после a1
, но перед a2
. Что мы можем сделать, когда у нас уже есть последовательность a1
, a2
, a3
в хранилище событий? Должны ли мы вводить b1
после a1
и так далее? Является ли это жизнеспособным решением для огромного хранилища событий? Безусловно, потребуется много времени, чтобы последовательно переиграть все старые события и отреагировать на них. Как мы можем предотвратить отправку электронного письма клиенту, обработав недавно созданное событие b1
, которое реагирует на тему пятилетней давности? Есть ли шаблон для предотвращения подобных проблем?