Я хочу использовать элементы шаблона CQRS в своем проекте. Интересно, правильно ли я делаю это с Command и Events. В чем я не уверен, так это в том, что событие может вызывать команду. Чтобы лучше показать, что я хочу сделать, я буду использовать диаграмму и пример.
Вот пример:
Пользователь вызывает TripCreateCommand. TripCreateCommandHandler выполняет свою работу и после успеха публикует TripCreatedEvent.
Теперь у нас есть два слушателя на TripCreatedEvent (порядок выполнения слушателей не имеет значения)
Первый слушатель (может быть выполнен после второго слушателя):
для каждого пользователя в trip.author.friends вызывать две команды (порядок команд важен)
- ОпубликоватьTripOnUserWallCommand
- SendNewTripEmailNotificationCommand
- SendNewTripPlatformNotification
Второй слушатель (может быть выполнен перед первым слушателем):
- ПубликацияTripOnUserSocials
А это примерная схема:
Это хороший способ? Может ли EventListener вызвать команду или, может быть, мне следует сделать это каким-то другим способом?