领域事件是否违背DDD中「聚合=事务边界」的核心原则?
关于DDD领域事件实现与聚合边界原则的矛盾疑问
不少DDD相关文章中提出的领域事件常规实现,核心作用是支持跨聚合同步修改,并将这些修改纳入同一数据库事务中持久化。但结合DDD中「聚合本应是事务边界」的原则,这种做法似乎与DDD原则相悖。
例如某文章中的内容:
此模式并非始终适用。若需执行发送邮件、通知Web服务或其他可能阻塞的任务,应回归常规异步消息传递。但对于跨独立聚合的同步消息传递,领域事件是确保整个模型中聚合根一致性的极佳方式。替代方案是事务脚本设计,其一致性由非领域模型的其他非直观层强制执行。
(重点为笔者所加)
我的理解是:「跨独立聚合的同步消息传递」以及由此延伸的在单个事务中持久化多聚合修改的概念,和DDD中聚合作为一致性边界的核心理念存在冲突。但这种领域事件的变体在DDD相关领域颇为流行,却鲜有人明确指出这一矛盾。
我是不是忽略了什么?这种做法是否合理,还是人们存在误解?
内容的提问来源于stack exchange,提问作者Arad
相关产品推荐
相关产品推荐

