В настоящее время я реализую архитектуру, управляемую событиями, и у меня есть служба для команды (часть записи) и другая служба для запроса (часть чтения).
Что я делаю прямо сейчас.
- Принять команду в CommandService
- Сохранение события и публикация события на шине событий
- ReadService прослушивает эти события и обновляет модели чтения.
Это звучит хорошо, если вы слушаете свои собственные события. Допустим, я слушаю внешнее событие от CommandService.
- Прослушать событие
- Обработать команду для этого события
- Сохраните событие, сгенерированное вашим доменом, в хранилище событий и опубликуйте это событие в шине событий.
- ReadService прослушивает эти события и обновляет модели чтения.
При таком подходе я вижу двойную задержку для обновления моих моделей чтения. Первая задержка -> время CommandService извлекает событие 2-я задержка -> время ReadService извлекает событие, сгенерированное из CommandService.
Я думаю, что если я обновлю свой ReadService для прослушивания хранилища событий CommandService напрямую без необходимости в шине событий, то я смогу уменьшить одну из этих задержек.
Что вы думаете?