如果我在处理程序中有2个聚合,订单和客户以及OrderPayCommand,它将检查订单状态,并检查客户余额。如果一切成功,它将发送一个事件OrderPaidEvent,它将由Customer聚合处理以更新余额。
那么,如何在一个命令处理程序中检查2个聚合的条件?那么,我是以错误的方式使用它吗?
答案 0 :(得分:2)
在Axon Framework中,命令只能由一个@CommandHandler
注释函数处理。因此,只有一个Aggregate负责处理该行动。
如果您在多个聚合之间编排操作,通常意味着您可以使用Saga
。 Axon中的Saga将与多个聚合关联,这使您可以侦听来自所有聚合的事件并向其发出命令。
因此,您可以处理某些事件,例如OrderPaidEvent
,并且在处理完Saga后,您可以AdjustCustomerBalanceCommand
向与您关联的Customer
汇总发出filter :sass, syntax: :scss
。
简而言之:命令始终由只有一个聚合/实体处理。为了在聚合之间协调行动,我建议看一下Saga。