Как выбрать, какие события отправляются пользователю в периодически подключенной системе с использованием CQRS с источником событий? - PullRequest
0 голосов
/ 27 октября 2019

Я создаю веб-приложение, которое пользователи могут редактировать и делиться заметками. Пользователи должны быть подключены к заметкам с ролями (владелец, чтение, чтение и запись). Это иногда подключаемая система, поэтому я выбрал синхронизацию с использованием CQRS и источников событий. После презентации Грега Янга [36:20 - 38:40] процесс будет выглядеть следующим образом:

  1. Клиент вносит изменения в автономном режиме.
  2. Клиент подключаетсяв Интернет.
  3. «Хранить и пересылать» отправляет события, которые произошли, когда клиент был в автономном режиме.
  4. Клиент сравнивает локальные события с полученными событиями и выполняет слияние, решая, какие командыхранить. Затем обновляет модель локального представления.
  5. Клиент отправляет сохраненные команды (созданные в автономном режиме) на сервер.
  6. Сервер выполняет команды и генерирует события, которые хранятся в хранилище событий.

Вопрос: Как «Хранить и предисловие» решает, какие события должныотправлять каждому пользователю?

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

1 Ответ

1 голос
/ 30 октября 2019

Поскольку ваш клиент знает, какие агрегаты он отображает, он может просто сообщить бэкэнду: «эй, есть события для aggregateIds [...] с [timestamp]?».

Вот как reSolve framework поддерживает реагирование пользовательского интерфейса - клиент подписывается на события для конкретного aggregateId и получает их в режиме реального времени через веб-сокеты.

Таким образом, одним из ответов на ваш вопрос может быть «позволить пользователю запрашивать события (aggregateIds), которые онинтересуюсь "

...