Я работаю над веб-приложением для выставления счетов, которое использует источники событий и CQRS.Денормализаторы CQRS/ES
У меня есть два денормализатора для разных запросов (один для списка сводок счетов-фактур и один для единого счета с полной информацией). Мне кажется странным, что мне нужно скопировать много логики для этих двух денормализаторов - например, слушать события, которые меняют общий итог, промежуточный итог, налоги и т. Д.
Я закончил тем, что передал сам агрегат, который содержит реальные рассчитанные данные, на шине обмена сообщениями, а не только события, и денормализаторы слушали его вместо событий.
Это сделало его более простым для меня, но, похоже, отличается от рисунка. Этот подход не упоминался ни в одной из статей, которые я прочитал.
Мне понравилась идея пропустить только события на автобусе, и каждый денормализатор отреагировал на то, что ему нужно, но на практике это стало более громоздким.
Мне бы хотелось услышать, что вы думаете.
Благодарим за помощь!
«Скопируйте много логики»: какая логика в точности? Можете ли вы привести пример? – guillaume31
@ guillaume31 Конечно, например, пользователь добавляет налог на счет-фактуру. У меня есть событие TaxAdded (курс: Двойной), который изменяет общую сумму счета. Я хочу обновить как сводку, так и подробные мнения, добавив сумму налога в общую сумму счета. Пропустив сам агрегат, я могу просто выполнить вычисление один раз (в совокупности) и обновить оба представления на основе этого вычисления. – amitayh
. Вы также можете просто выполнить расчет один раз в совокупности и включить только данные, которые были изменены вместе с событием (например, новая сумма вместо ставки налога). Не нужно передавать всю совокупность. – guillaume31