gpt4 book ai didi

cqrs - 两个用户在 NEventStore 中的同一聚合根上工作

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

我知道命令不应失败,因此我需要在发送命令之前验证命令。

但是,如果两个用户正在更新相同的聚合根并且两者似乎都有效,那么我们就会遇到并发问题。

我该如何在 NEventStore 中处理这个问题?我的客户是否需要获取他们在保存事件时传递的版本号或提交 ID,如果它已更改,那么我会引发异常?

最佳答案

正如您所提到的,管理事物的一种方法是在加载聚合时指定您期望执行的版本(这会导致过载)。

如果您生成的事件与事件发生冲突,那么提交阶段将[通过域]产生一个ConcurrencyException:-

  • 已经存在[您未加载到聚合中]。
  • 由竞争进程同时写入

确保您仔细阅读了 NuGet 包放入项目中的 .doc 文件 - 它涵盖了 JO EventStore 如何处理此问题的基础知识。

为清晰起见进行更新 注意,虽然这一切都有效并且有时是必要的,但一般来说,您会发现[并且默认情况下应该努力工作以到达快乐的地方]您可以管理最多通过使您的命令本质上是幂等的和/或在整个系统中使用自然冲突解决机制来解决这些冲突解决问题,以便不需要依靠事件存储来提供如此低级别的保护(例如 etags、重试)发生冲突时的命令等)。如果您发现自己在实践中沿着这条道路取得了任何重大学位,我建议您使用 DDD-CQRS 列表上足够的实际用例来讨论您的策略。

关于cqrs - 两个用户在 NEventStore 中的同一聚合根上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455915/

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