Design patterns 重播事件以进行调整
假设我正在开发一个使用“事件来源”(存储业务事件)的系统,该系统可以购买和销售材料;在某个时候,会生成一份包含价格和成本信息的报告 想象一下,我的一个客户打电话给我说,“成本是错误的,对我来说,利润的规则是这样的” 我可以添加更多处理程序或更改规则以适应这种特殊情况,并重播事件Design patterns 重播事件以进行调整,design-patterns,cqrs,event-sourcing,Design Patterns,Cqrs,Event Sourcing,假设我正在开发一个使用“事件来源”(存储业务事件)的系统,该系统可以购买和销售材料;在某个时候,会生成一份包含价格和成本信息的报告 想象一下,我的一个客户打电话给我说,“成本是错误的,对我来说,利润的规则是这样的” 我可以添加更多处理程序或更改规则以适应这种特殊情况,并重播事件 但我的问题是,这是正确的方法(或者至少更好)?在一个事件源系统中,事件是不可变的——发生了什么的简单事实。重写这些事件的历史是人们根本无法做到的事情[1] 更改基于这些事件得出结果的计算逻辑绝对是一件正常的事情(这是即使
但我的问题是,这是正确的方法(或者至少更好)?在一个事件源系统中,事件是不可变的——发生了什么的简单事实。重写这些事件的历史是人们根本无法做到的事情[1]
更改基于这些事件得出结果的计算逻辑绝对是一件正常的事情(这是即使是外包也能做到的关键事情之一) 你是否真的改变了你的代码或者提供了一个替代算法是一个选择的问题——如果原来的是一个bug(听起来像你的情况),那么改变代码。如果没有,写一个新的 在某些情况下(通常不建议),人们总是从最初的事件开始工作;如果是这样的话,你所要做的就是改变你的推导逻辑,你就完成了 如果您已将事件投影并反规范化到持久性存储中,并且已确定该情况代表一个bug,则通常的方法是:
[1] 是的,有一些奇异的情况可以证明它是正确的,但这是一个.001%的情况对不起,如果这是一个非结构化的问题,我对DDD/CQRS和ES不熟悉,对我来说这是一个真实的用例。更改基于这些事件得出结果的计算逻辑绝对是一件正常的事情(这是即使是采购也能实现的关键因素之一)。就这样,谢谢