Я хочу использовать элементы шаблона CQRS в моем проекте. Интересно, правильно ли я делаю это с командами и событиями. То, что я не уверен, это если событие может вызвать команду. Чтобы лучше показать, что я хочу сделать, я буду использовать диаграмму и пример.CQRS - может EventListener вызвать команду?
Это пример:
Пользователь вызова TripCreateCommand. TripCreateCommandHandler выполняет свою работу и после успеха публикует TripCreatedEvent.
Теперь у нас есть два слушателя TripCreatedEvent (порядок исполнения слушатель не имеет значения)
Первый слушатель (может быть выполнить после второго слушателя):
для каждого пользователя в trip.author.friends вызвать два Command (порядок команд важно)
- PublishTripOnUserWallCommand
- SendNewTripEmailNotificationCommand
- SendNewTripPlatformNotification
Второй слушатель (может быть выполняться до первого слушателя):
- PublishTripOnUserSocials
И это образец схема:
ли это хороший способ ? Может EventListener вызвать команду, или, может быть, я должен сделать это другим способом?
Спасибо за повтор! Масштабируемость является одной из самых важных в моем проекте (я хочу иметь возможность горизонтального масштабирования моего приложения), поэтому мне определенно нужно обрабатывать команду асинхронно. Я хочу использовать async и ждать от C# для этого. – mrrobot