2012-03-14 71 views
1

用Jolivers EventStore在c#中实现/处理幂等性。这是否意味着在处理之前只需检查一个聚合ID和版本以及域/ readmodel?还是有更多的呢?CQRS/EventStore幂等性?

[编辑]

的原因,我问的是我,比如,要发展我的应用程序中的小功能块。

所以 - 想象一下,我有一个网上商店的产品数据类型的数据集。我想通过创建搜索产品的能力来开始开发应用程序。这意味着以某种方式导入数据集(无所谓)。数据集中的每个产品最终都会触发(例如)一个CreateProductCommand - 该命令会通过激发ProductAddedEvent的域,然后由一个逆向工具处理,以填充ProductSearchView现在 - 在实现搜索功能后,我想要创建产品细节视图。我已经运行导入以将数据集导入系统,因此我想重新运行事件,这些事件将触发denormalizers以填充ProductDetailView

这是否有意义?

+0

你说的是两次处理完全相同的命令吗? – 2012-03-14 12:46:40

回答

4

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

我正在使用一个单独的东西来做到这一点,因为我在部署过程中采取了一个步骤。

使用事件商店的一个实例我从一开始的时候所有事件:

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

然后我遍历列表并分派事件到读取模型中使用多少,我使用相同的代码当他们正常派遣。

基本上就是这样。

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

+0

我可以启动一个新的乌鸦实例,流到那个然后切换我猜? – iwayneo 2012-03-14 14:38:41

+0

这不是“理想的” - 回放事件并且不要搞坏现有的数据,而在新的东西上工作将是理想的我猜 – iwayneo 2012-03-14 14:40:31

+0

现有数据在事件存储中。只要你保持完好无损,你可以用你想读的模型做任何事情。 – 2012-03-15 09:05:32