gpt4 book ai didi

entity-framework - 在一笔交易中创建多个聚合

转载 作者:行者123 更新时间:2023-12-01 12:05:44 27 4
gpt4 key购买 nike

我的有界上下文(库存)收到一个数量为 5 的事件。其中 5 是从仓库中的卡车上卸下的托盘数量。现在在我的库存 BC 中,我想创建 5 个聚合(foreach 托盘 1 个聚合)。我怎样才能在我的应用程序层中做到这一点?如果我成功创建了其中的 3 个怎么办?我无法过渡地创建它们,因为我的持久存储是基于文件的。我该怎么办?

最佳答案

通常的答案是这样的——我们做的第一件事是将事件保存在“TODO”列表中。

我们对这个列表的“订阅”需要跟踪,也就是记下它在待办事项列表中的位置。例如,我们可能将 TODO 列表视为仅附加的事件序列,并且订阅记下最后一个完全处理的事件的索引。

当订阅运行时,它会查找列表中第一个未处理的事件,并根据您需要多少事务来完成工作。完成所有这些工作后,它会更新自己的计数器(另一个事务),然后可以继续。

如果处理失败,那么我们永远不会到达“写下来”的步骤;所以当我们重新启动时,它会再次尝试处理相同的事件。

为此,我们需要两个属性:一个是再次运行处理器应该为聚合生成相同的标识符列表,并且处理器知道聚合可能已经创建,并在这种情况下采取适当的行动。

所以在最坏的情况下:我们得到 5 个托盘的事件。我们创建了所有 5 个新聚合,然后在它可以记录事件已被完全处理之前崩溃。进程重新启动,并开始处理同一事件。它发现每个新聚合都已创建,因此每个步骤都变为空操作。最后,在完成事件的所有处理后,它记录事件已完成。

换句话说,我们需要幂等处理。

关于entity-framework - 在一笔交易中创建多个聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com