отправляет события, сага слушает события и отправляет команды. то есть логика в агргегате, координация действий в саге. (в частности, это сказано в https://cqrs.nu/Faq/sagas и многих других статьях)
в то же время в том же NServiceBus и php service bus сага обрабатывает любые сообщения и по идее может быть использована и так, и эдак. это упрощение или альтернативная интерпретация?
Крис Ричардсон в своей книге про микросервисы разделяет реализацию саг на 2 типа: основанную на хореографии и основанную на оркестрации Хореография - для простых саг, логика по изменению агрегатов размазывается между сервисами. Один сервис слушает события другого и обновляет какой-то агрегат у себя, генерит событие об этом и т.д. Оркестрация - для более сложных вещей. В этом случае существует оркестратор/координатор, который запускает сагу, генерит шаги и слушает ответы на каждом шаге, в случае фейла, может инициировать компенсирующие шаги. Вся логика в одном месте Это просто 2 разных подхода
Обсуждают сегодня