【发布时间】:2017-06-22 08:52:48
【问题描述】:
我们正在考虑在工作中实施 CQRS 模式,并且有几个关于验证的问题。
假设我们有 3 个聚合根:
-
User -
Business UserToBusinessRelationship
当用户注册时,发送的事件将是:
UserCreated
BusinessCreated
UserAddedToBusiness
需要验证事件,例如创建用户和企业之间的链接,用户和企业都应该创建。
我看到了两种方法。
前期验证:使用最后处理的快照和未处理的事件即时构建读取模型并将其用于验证。
处理时验证:按原样接受事件/命令并在处理事件时进行验证。
第一种方法有即时反馈,但它需要创建一个最终读取模型,仅用于验证。第二个更简单,但不会向消费者提供出错的反馈。
我在想这样的事情:当你发出一个事件时,你会得到一个 id,你以后可以用它来查询事件的状态。如果事件处理成功,你会得到“OK”,否则你会得到一个错误,告诉你出了什么问题。
这是一种有效的方法还是矫枉过正?消费者如何知道该事件已被处理并且数据已准备好使用?
【问题讨论】:
-
“事件验证”是什么意思?在 CQRS 中,仅验证命令;在它们被接受并生成事件之后,这些事件必须被接受,它们被认为非常有效,它们代表已经发生的事实。
-
也许您的问题的答案在这里:danielwhittaker.me/2014/11/22/…
标签: domain-driven-design cqrs event-sourcing