Доступ к агрегату из другого агрегата в архитектуре микросервиса источников событий на основе доменного дизайна - PullRequest
0 голосов
/ 02 июня 2019

Допустим, у нас есть три агрегата: актив (активы пользователя), доход (содержит источники дохода пользователя) и профиль (содержит сущности и значения, связанные с управлением профилями пользователя). Теперь статус профиля пользователя может быть обновлен либо посредством изменения дохода, либо путем изменения актива. Но здесь есть одна загвоздка: любое изменение должно учитывать как активы, так и доходы, и для этого сервису профиля необходимо отслеживать активы и доходы.

Как мы можем решить эту проблему с помощью источников событий. Я имею в виду, рекомендуется ли обновлять локальный магазин в службе профилей для агрегатов активов и доходов? Если это так, то нам нужно решить возможные проблемы согласованности. Есть ли другой подход к этому?

1 Ответ

0 голосов
/ 03 июня 2019

Используйте транзакцию в службе приложений и сохраните три агрегата в трех разных репозиториях, чтобы обеспечить согласованность. Я предполагаю, что они все в одном контейнере.

Если вы говорите о возможной согласованности, это может быть не так, поэтому, если они принадлежат другому ограниченному контексту, вы можете реализовать прослушиватель (адаптер входящего порта) на BC получателя, который в конечном итоге обновит агрегат в ответ на это событие.

...