我知道命令不应该失败,所以我需要在发送命令之前验证我的命令。
但是,如果两个用户正在更新相同的聚合根目录,并且这两个用户看起来都是有效的,那么我们就会遇到并发问题。
如何在NEventStore中处理此问题?我的客户是否需要获取在保存事件时传入的版本号或提交id,如果它发生了更改,我就会引发异常?
发布于 2013-01-22 19:15:53
正如您提到的,管理的一种方法是指定您期望在Load聚合时执行操作的版本(有一个重载)。
如果您生成的事件与以下事件冲突,则提交阶段将通过域生成一个ConcurrencyException:
并发加载到中
确保对NuGet包放入项目中的.doc文件的阅读量大于1-它涵盖了JO EventStore如何处理这一问题的基础知识。
更新的清晰度 NB虽然这一切都是有效的,有时也是必要的,但通常你会发现,默认情况下,你应该努力工作,在那里你可以通过使你的命令自然地幂等性质和/或在整个系统中使用自然的冲突解决机制来管理大多数这些冲突解决方案,以便不需要依靠你的事件存储来提供如此低级别的保护(例如,etags,在发生冲突时重试命令等)。如果你发现自己在实践中走上了这条道路,我建议你在DDD-CQRS列表上用足够的实际用例来讨论你的策略。
https://stackoverflow.com/questions/14455915
复制相似问题