Несколько распределенных хранилищ событий для управления данными работают вместе
Я играю с CQRS/ источником событий уже пару месяцев. В настоящее время у меня возникли проблемы с другим экспериментом, и я надеюсь, что кто-нибудь сможет помочь, объяснить или даже намекнуть на другой подход, а не на источник событий.
Я хочу создать распределенное приложение, в котором каждый пользователь может управлять своими данными. Так что моя идея состоит в том, что каждый пользователь имеет свое собственное хранилище событий, в то время как другие пользователи могут иметь (условный) доступ к нему.
Когда пользователь A выполняет какую-либо команду, это может подразумевать более одного хранилища событий. Два примера:
1) Удалить общую задачу из списка задач, размещенного в хранилище событий A и B
2) Добавление ссылки на комментарий, сохраненный в хранилище событий A, к сообщению, сохраненному в хранилище событий B.
Мое единственное решение в настоящее время, кажется, использует менеджер процессов, прикрепленный к каждому хранилищу событий, поэтому, когда событие было добавлено в одно хранилище событий, сага имеет дело с применением события и к другим связанным хранилищам событий.
1 ответ
Не уверен, какова цель вашего решения, но если вы хотите, чтобы одна система реагировала на события из другой системы, после того, как события сохранены в хранилище, подписка (например, расширенная подписка, предоставляемая EventStore Грега Янга) публикует ее в сообщении. автобус, используя pub-sub, и все заинтересованные стороны могут обработать это событие.
Однако это будет неправильно, если они просто "сохранят" это событие в своих магазинах. Фактически они должны иметь обработчик событий, который будет генерировать команду внутри локальной службы, и эта команда может (или не может) привести к локальному событию, если все условия будут выполнены. Только то, что происходит в границах, под локальным управлением, должно быть сохранено в локальном хранилище.