Могу ли я иметь несколько команд и запросов CQRS внутри одного системного запроса?В приведенном выше примере мне нужно получить существующие данные из БД (запрос), сохранить данные (команда) и т. Д.
Нет, вы не можете.Каждый запрос является либо одной командой, либо одним запросом.
Как насчет логики выборки данных из API, можно ли рассматривать его как запрос CQRS, поскольку процесс получения данных или запрос CQRS - это единственный процессполучать данные из внутреннего хранилища, а не из внешнего API?
Команды и запросы относятся к локальной базе данных.Извлечение данных из внешних сервисов через удаленный API - это интеграция с другим BC (см. Шаблоны отображения контекста DDD).
Как насчет процесса сохранения видео в s3 и хранения информации в таблице загрузок, могу ли я рассмотретьпроцесс сохранения ресурсов на S3 в виде команды CQRS, и эта команда вернет данные, которые необходимо сохранить для загрузки позже?
Хранение видео на s3 - это не команда, это интеграция с внешней службой,Вы должны будете интегрировать (снова шаблон сопоставления контекста).
Я не хочу сохранять его немедленно, так как объект загрузки является частью агрегата для хранения основной информации, где объект основной информации является основным объектом агрегирования.
Я не знаю модель вашего домена, но если выгрузка является дочерней сущностью в агрегате, то сохранение вещей в вашей таблице выгрузок не является командой.Команда относится к совокупности.Хранение информации в таблице загрузок будет частью команды.
КАК ВЫВОД:
Команда или запрос - это транзакционная операция на границе прикладного уровня (служба приложения).Они имеют дело с данными из вашей БД.Каждая команда / запрос является транзакцией.