CQRS может запросить источник события?

Обычно, когда говорят о реализации CQRS, предполагается, что команды являются источником событий. Но могут ли запросы, сделанные пользователем, быть источником созданных событий в хранилище событий? Или такие действия (когда нам нужно событие, отражающее запрос) должны быть реализованы с помощью команды еще?

1 ответ

Решение

Но могут ли запросы, сделанные пользователем, быть источником созданных событий в хранилище событий?

Не ходи за советом к эльфам, потому что они ответят как нет, так и да.

Итак, часть "нет": запросы отличаются тем, что они не меняют модель предметной области. В реализации CQRS запросы обслуживаются моделью чтения, которая может вообще не иметь доступа к вашему хранилищу событий.

когда нам нужно событие, которое отражает запрос

Часть да: нет закона, который говорит, что вы не можете собрать историю запросов и поместить ее в свой магазин событий.

Но я озадачен тем, что не вижу четкого случая, когда домену нужно событие, отражающее запрос. Это действительно странно. Я думаю, что необходимость в событии, отражающем запрос, является намеком на то, что ваша модель не работает.

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

Если требование исходит от операций, аналитики, отчетности, удобства использования... тогда модель домена, вероятно, не является подходящим местом для этой информации.

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

Другие вопросы по тегам