В текущем плане входящие команды обрабатываются через приложения-функции, в результате чего события отправляются в концентратор событий, а затем материализуются представления.
Кто-то утверждает, что вместо хранения событий в чем-то вроде хранилища таблиц и материализации представлений на основе событий и снимков мы должны:
Просто транслируйте события в журнал в Azure Monitor, чтобы провести аудит.
Мы можем вносить изменения в объект домена немедленно в ответ на команду и использовать канал изменений в качестве источника событий для материализованных представлений.
Он не видит преимуществ даже в материализованном представлении. Почему бы просто не использовать запрос? Аргумент в том, что мы не ожидаем большого трафика.
Он хочет вести весь журнал аудита, сохраняя события в журнале монитора Azure - просто журнале приложения. Вместо этого эти команды должны просто напрямую изменять представление сущности в космосе, и мы использовали бы канал изменений из CosmosDB в качестве событий объекта домена, или мы бы создавали новые события на его основе через подписчиков на этот поток.
Действительно ли это выгодный подход? Можете ли вы придумать какие-либо причины, по которым мы не захотим этого делать? Похоже, мы здесь что-то потеряем.
Он говорит, что нам больше не нужно беспокоиться о возможной согласованности, поскольку у нас будет немедленная согласованность.
Каждая оцененная мной эталонная реализация НЕ делает это так, как он предлагает. Я не очень разбираюсь в преимуществах / недостатках парадигмы поиска событий / CQRS, поэтому сейчас я в растерянности .. Сейчас я яростно исследую
Это концептуальная проблема, поэтому здесь не так много примеров кода. Однако вот несколько ссылок, которые, кажется, подтверждают мой подход.
https://medium.com/@thomasweiss_io/planet-scale-event-sourcing-with-azure-cosmos-db-48a557757c8d
https://sajeetharan.com/2019/02/03/event-sourcing-with-azure-eventhub-and-cosmosdb/
https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing