我是 CQRS/ES 世界的新手,我有一个问题。我正在开发一个使用事件溯源和 CQRS 的发票 Web 应用程序。
我的问题是——据我了解,进入系统的新命令(比如说 ChangeLineItemPrice)应该通过域模型,以便可以将其验证为合法命令(例如,要检查此行项目是否实际存在,价格不违反任何商业规则等)。如果一切顺利(命令未被拒绝) - 则创建并存储相应的事件(例如 LineItemPriceChanged)
我不太明白的是,在尝试应用命令之前,我如何将这个聚合保存在内存中。如果系统中有一百万张发票,是否应该在每次应用命令时回放整个历史记录?我是否总是在没有任何验证的情况下保存事件并在构建视图模型/投影时进行验证?
如果我误解了该过程的任何部分,我将不胜感激您的反馈。
谢谢你的帮助!