首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CQRS/ES -更改两个聚合

CQRS/ES -更改两个聚合
EN

Stack Overflow用户
提问于 2013-02-17 22:21:24
回答 1查看 624关注 0票数 0

我有DDD的问题。我刚开始使用它,所以我没有太多的经验。有两个有界的上下文:维护和客户端。每个客户端都有引擎的部件列表。从事维修的是以维修为职业的仓储公司。客户可以选择每个零件的首选公司。

管理员可以暂停公司。在两个聚合体中有变化。首先,它改变了公司的状态,下一家公司应该从喜欢它的客户中删除。处理它的最佳模式是什么?我可以在聚合中创建两个处理程序,但是当其中一个处理程序抛出异常时,我如何回滚更改?

EN

回答 1

Stack Overflow用户

发布于 2013-02-18 21:01:27

看起来您需要修改聚合中的一致性界限。

但是,如果在修改之后,您仍然需要在一个事务中更改两个聚合,您可以考虑最终一致的系统和使用域事件(但在CQRS中,您已经这样做了,不是吗?)。

Vaughn Vernon在他的书"Implementing Domain-Driven Design“中建议了处理最终一致性的下一种方法:聚合发布域事件,该事件被传递给一个或多个订阅者。每个订阅者都在它自己的事务中执行(因此您仍然在事务中更改一个聚合)。如果事务失败(订阅者未在超时时间内确认成功),则再次聚合、发送消息或执行一些回滚例程。

由于您使用的是Event Sourcing,因此您可以将“失败”事件标记为rejected并使用Fowler's Retroactive Event mechanism

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14922051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档