在一个命令处理程序中使用多个聚合

时间:2018-05-28 10:23:02

标签: axon

如果我在处理程序中有2个聚合,订单和客户以及OrderPayCommand,它将检查订单状态,并检查客户余额。如果一切成功,它将发送一个事件OrderPaidEvent,它将由Customer聚合处理以更新余额。

那么,如何在一个命令处理程序中检查2个聚合的条件?那么,我是以错误的方式使用它吗?

1 个答案:

答案 0 :(得分:2)

在Axon Framework中,命令只能由一个@CommandHandler注释函数处理。因此,只有一个Aggregate负责处理该行动。

如果您在多个聚合之间编排操作,通常意味着您可以使用Saga。 Axon中的Saga将与多个聚合关联,这使您可以侦听来自所有聚合的事件并向其发出命令。 因此,您可以处理某些事件,例如OrderPaidEvent,并且在处理完Saga后,您可以AdjustCustomerBalanceCommand向与您关联的Customer汇总发出filter :sass, syntax: :scss

简而言之:命令始终由只有一个聚合/实体处理。为了在聚合之间协调行动,我建议看一下Saga。

相关问题