CQRS / EventStore Idempotency?

时间:2012-03-14 12:41:13

标签: c# domain-driven-design cqrs event-store

使用Jolivers EventStore在c#中实现/处理幂等性。这是否意味着在处理之前只需要在域/ readmodel旁边检查聚合ID和版本?或者还有更多的东西吗?

[编辑]

我问的原因是,我想用小功能块开发我的应用程序。

所以 - 假设我有一个类型的数据集,其中包含在线商店的产品数据。我想通过创建搜索产品的能力来开始开发应用程序。这意味着以某种方式导入数据集(无论如何)。数据集中的每个产品最终都会触发(例如)一个CreateProductCommand - 该命令通过激活ProductAddedEvent的域,然后由反规范器处理以填充ProductSearchView

现在 - 在实施搜索功能后,我想创建产品详细信息视图。我已经运行了导入以将数据集导入系统,因此我想重新运行将触发反规范器的事件以填充ProductDetailView

这有意义吗?

1 个答案:

答案 0 :(得分:3)

您可以做的是清理读取模型数据存储,并使用您首次发布时使用的相同机制运行事件存储中的所有事件。

我使用单独的东西来执行此操作作为部署过程中的一个步骤。

使用事件存储的实例我从一开始就获得所有事件:

var commits = eventStore.Advanced.GetFrom(DateTime.MinValue).ToList();

然后我遍历列表并使用我们在正常调度时使用的大部分相同代码将事件分派给读取模型。

基本上就是这样。

你应该做的是为你创造一些简单的东西,因为你必须做很多事情。