域驱动设计 – CQRS DDD事件采购中的总体间通信

前端之家收集整理的这篇文章主要介绍了域驱动设计 – CQRS DDD事件采购中的总体间通信前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用事件来源的汇总后端的基于DDD原则的环境中,应如何分离 aggregate roots(AR)?

例如,我有一个设备聚合根(AR),其具有负责创建预订AR的工厂方法。预订是人员AR和设施AR的时间敏感组合。一个人只能在一个设施中预订。

在DDD中,我会参考“个人预订”和“设施中的人”。然而,当生成用于事件采购的事件时,我认为尝试处理从后端反序列化的事件将变得令人望而却步。因此,我只采取了对基于值对象的唯一标识的引用。这带来了一个新的问题,但是当AR上的一个方法需要在另一个AR上调用另一个方法时 – 如何处理这种情况?从域AR中点击事件源存储库?

在这种情况下的一般用例是什么?我接近这个错了吗?

聚合根边界定义一致性边界。
在总体内,一致性得到保证。
外面…不是
所以你不应该有跨越几个聚合的操作,并且必须一致。
如果您需要跨越两个聚合的事务,则应查看您的聚合边界。

对于在聚合之外发生的事情,您应该有一个事件处理程序将向其他聚合发送命令。如果聚合之间的动作逻辑更加复杂,那么可以定义一个进程,一个状态机,它将侦听事件并发送命令到聚合。流程可用于定义长时间运行的事务(具有补偿而不是回滚),或者基于大规模(即使在有界上下文之间)发生的事情做出业务决策。

猜你在找的设计模式相关文章