Использование нескольких агрегатов в одном обработчике команд
При условии, что у меня есть 2 агрегата, order и customer, и OrderPayCommand в обработчике, он проверит статус заказа и проверит баланс клиента. Если все выполнится успешно, он отправит событие OrderPaidEvent, которое будет обработано агрегатом клиента для обновления баланса.
Итак, как я могу проверить условие для 2 агрегатов в одном обработчике команд? Итак, я использую это неправильно?
1 ответ
В рамках Axon Framework команда может обрабатываться только одним @CommandHandler
аннотированная функция. Таким образом, только один Агрегат будет отвечать за это действие.
Если вы координируете действия между несколькими агрегатами, это обычно означает, что вы можете использовать Saga
, Сага в Axon будет иметь ассоциации с несколькими агрегатами, что позволит вам прослушивать события из всех этих агрегатов и давать им команды. Таким образом, это позволяет вам обрабатывать определенные события, такие как OrderPaidEvent
например, и после обработки этого в вашей саге вы можете выпустить AdjustCustomerBalanceCommand
к Customer
совокупность вы связаны с.
Вкратце: команда всегда обрабатывается только одним Агрегатом / Сущностью. Для организации действий между агрегатами, я бы посоветовал взглянуть на Saga.