假设您的有界上下文中有两个聚合,它们之间存在一些约束。使用 DDD,这些内部聚合约束不能在同一事务中强制执行,即聚合边界是事务边界。
您是否会考虑使用 Microsoft CQRS 旅程中所谓的“流程管理器”来协调同一有界上下文中的两个聚合,或者流程管理器仅用于在两个有界上下文之间进行协调?在同一有界上下文中协调两个或多个聚合根的流程管理器的等效项是什么?
聚合根默认定义一个有界上下文,尽管是较低级别的(顺便说一句,您可以找到的最低级别有界上下文是一个对象,任何对象)。流程管理器是他们使用的名称,而不是传奇,也许您也可以想出其他名称,没关系,它们都有相同的目的。
是的,我会考虑使用传奇来实现最终的一致性。事实上,我认为这是最好的方法,这正是我在自己的应用程序中所做的。不管怎样,我使用的是消息驱动架构(是的,在本地非分布式应用程序中),并且我通过服务总线自动支持传奇(我自己的,尚未发布)。
处理最终一致性时重要的是确保各处的幂等性。也就是说,聚合根应该拒绝重复操作,当然事件处理程序应该能够应对同一事件可以多次发布的事实。但是,请注意,您不能保证 100% 幂等性,但可以非常接近。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)