我正在研究CQRS架构。现在我们已经准备好了所有部分,并按照以下流程处理命令:
这是正确的顺序吗? 我可以在命令处理程序中执行持久性逻辑并删除一个事件处理程序吗?
答案 0 :(得分:8)
是的,您必须在命令处理程序中执行持久性逻辑,因为:
因此,您必须确保在发布事件之前将聚合持久保存到数据库。因为,你可以
答案 1 :(得分:7)
作为旁注, PersonLanguageChanged 事件不应包含根聚合,而只包含有关更改内容的信息。
不包括整个聚合的主要原因是将事件与实体分开。例如,在DDD场景中,您可能有另一个有界上下文侦听此特定事件,并且有界上下文具有不同的Person聚合,因为它可能会处理另一个域的复杂性,例如计费等。
这意味着订阅者不需要依赖于您的特定聚合。