Какие недостатки есть, если мы запускаем события после проекции? - PullRequest
0 голосов
/ 28 января 2020

Некоторый контекст проекта - FYI

В нашей системе мы используем некоторые приемочные испытания с огурцом. В тестовых прогонах мы используем полностью настроенную систему микросервисов (локальный компьютер). Источник событий управляется хранилищем событий Axon.

Сценарий

Мы применяем команды для агрегатов и запуска бизнес-событий. Проекция реализована как обработчик событий. Другие службы прослушивают бизнес-событие и читают записанные данные (REST).

Мы делаем это таким образом, чтобы наши события были небольшими.

Чтобы преодолеть возможный период согласованности между бизнес-событием и проекция, в то время как чтение происходит в другом сервисе, у нас есть много операторов в наших шагах огурца, таких как

Thread.sleep(5000L);

Но значение сна зависит от индекса производительности базового оборудования. Таким образом, тесты являются хрупкими.

Вопрос Будет ли возможность инициировать события после того, как проекция записала данные? Таким образом, мы могли прочитать данные с гарантией актуальности.

1 Ответ

1 голос
/ 28 января 2020

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

В нашем случае наш пользователь подписывается на корзину пользователей и получает обновления для нее.

РЕДАКТИРОВАТЬ:

Конечно, вы также можете использовать axon-server S запрос шины. Если вы не можете позволить себе полноценный кластер, вы все равно можете хранить свои события в другом месте (jpa, jdb c, mongodb) и настроить свою шину запросов для использования бесплатной стандартной версии axon-server.

...