1)查询和命令的分离.我们的域查询一直是个问题.
2)使用事件存储进行审核 – 我不会将其用于重播 – 至少不是现在.
我对查询方面很好,我对域事件还有一些问题
如果一个命令导致更新多个聚合根(Ex.Order和OrderDetail),我将把它们定义在UnitofWork(事务)下.现在,每个域都负责在其状态发生变化时发布事件.
让我们说命令改变3 orderDetail记录.每个OrderDetail将发布2个事件.最后我们有6个事件.
a)如果我对域对象进行了更改(但未提交事务)时发布了这些事件,那么如何反转已发布的事件(可能已被订阅者使用)
>我可以想到的是将事件发布在同一单位工作范围内的列表中,一旦交易提交已经被调用,存储并发布.这听起来有什么意思吗?
b)如果OrderDetail中的更改要求在Order Aggregate Root中也发生一些更改
i)我应该通过处理由OrderDetail Aggregate发布的事件来基于这些更改吗?例如让我们说两个订单明细被删除.这使订单状态从“首选”到“不喜欢”.
ii)如果事件错误并且不更新订单状态 – 如果订单仍然是首选,则在2天内发货.
添加另一个问题
c)“域事件是所有应用程序状态更改的源”还是“所有应用程序状态更改的结果”
先谢谢你,
三月
解决方法
b)似乎这更像是你对实体和命令进行建模的问题.我不能想到一个为什么OrderDetail将是一个AggregateRoot的原因,但我不知道你的域…
c)命令将导致至少一个事件被发布
希望这有帮助:)正如Rinat所说,谷歌集团是提问的最佳地方,同时也来看看cqrsinfo.com和github.com/MarkNijhof/Fohjin和github.com/gregoryyoung/m-r的示例代码
原文地址:https://www.jb51.cc/html/229479.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。