Это вопрос, связанный с проектированием обработки команд с помощью Axon 4.
Допустим, у меня есть домен, который моделирует концепцию Payment
.
Фактический платеж будетсделано внешним Партнером.Я хочу отследить его в своей системе с помощью следующих событий: был выдан запрос на оплату , за которым следует либо Партнер согласился на платеж , либо Партнер отклонил платеж .
Все события, генерируемые командой, должны быть зарегистрированы в одной и той же транзакции базы данных.
Как лучше всего называть моего партнера по Axon 4 на самом деле?
Вот что я сделал до сих пор:
- Иметь одну команду с именем
RequestPaymentCommand
- Эта команда будет обрабатываться
Payment
Aggregate, подобным этому: - выполните некоторые проверки
- примените событие
PaymentRequestWasIssued
- , а затем вызовите внешнего партнера и, получив результат, примените либо
PaymentAccepted
, либо PaymentRefused
В этом ответе от stackoverflow говорится, что
Все данные, необходимые для применения событияобычно должны быть доступны в команде
Имея это в виду, я подстоять, что я должен создать столько команд, сколько событий?Но в этом случае какой смысл всех этих команд?Если я получу что-то вроде:
- Моя команда
RequestPaymentCommand
сгенерирует событие PaymentRequestWasIssued
. - Затем откуда-то я позвоню своему партнеру и затем отправлю еще команда (как ее назвать?), Которая будет генерировать событие с учетом результата от партнера?