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