【问题标题】:Event sourcing replay events and initial value事件溯源重播事件和初始值
【发布时间】:2020-10-27 18:56:55
【问题描述】:

假设我有一个产品目录,人们可以在其中更改产品价格。我实现了一个事件存储,以便能够重播所有“价格更改”事件以获取最新价格,以防它消失。

重播赛事时,我如何知道起始价格?我的意思是,如果事件只包含“价格更改为 10 美元”的信息,那么我必须首先知道它是什么。 或者你总是把这些信息放在活动中?就像这样“价格从 9 美元变为 10 美元”。

【问题讨论】:

    标签: event-sourcing


    【解决方案1】:

    如果产品的价格还没有改变,它的价格是多少?

    【讨论】:

    • 所以你的意思是即使第一次加载价格也应该引发一个事件?在此解决方案中这是不可能的,因为它是从另一个购买的产品批量加载的。即不是通过我的模型。
    • 是的,当然。只需使用 ProductPriceImported 事件或类似事件 - 这将准确描述您产品的定价历史记录。
    • 嗯,不能那样做。正如我所说,价格的加载是在另一个我没有源代码的产品中完成的。
    【解决方案2】:

    您可以在事件数据中包含时间戳或聚合的版本号。在回复时,您可以考虑这些价值观并提出类似的问题。这个价格比我已有的价格新吗?如果是这样更新否则不做任何事情。这样,即使您不知道所有过去的价格,您最终也可以获得最新和最旧的价格。仅当您的域可以这样做时。

    存储“价格从 9 美元变为 10 美元”事件可以帮助您确定用户之间的比赛。这是一些额外的信息,可以帮助您回答未来的问题。

    我有类似的情况,我的事件存储之外的东西在视图上创建了聚合的第一个版本。我必须创建一个特殊的进程来查看未聚合行的视图。并创建一个导入事件,然后将其放在商店中。

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2020-05-27
      • 2021-07-25
      • 2018-09-23
      • 1970-01-01
      • 2019-01-31
      相关资源
      最近更新 更多