获取NEventStore头部修订版

时间:2015-02-01 15:45:55

标签: c# neventstore

我有一个新的ES流已经有50万个事件(没有快照......我知道,我到了那里)和一个简单的客户端,atm只是附加(甚至更多)事件

NEventStore.OpenStream(int.MinValue, int.MaxValue)最初打开流需要很长时间;之后我存储了最后一个修订版,然后仅在NEventStore.OpenStream(lastRevision, int.MaxValue)上再次附加。问题仅在初次启动时才会出现。

NEventStore内是否有机制可以在不打开的情况下简单地附加,或者在不打开整个流的情况下确定头部修订版,这样我就可以从最后一个版本打开并追加。当然,我也可以直接进入数据库和查询,但这是我认为我不应该需要的依赖。

1 个答案:

答案 0 :(得分:3)

您已经提到了一种可能的解决方案:快照。

此示例打开来自最新快照的流,并在提交事件后添加新快照。

// Get the latest snapshot
var latestSnapshot = _eventStore.Advanced.GetSnapshot(streamId, int.MaxValue);            

// Open the stream from the snapshot if there is one, otherwise open the stream as normal
using (var stream = latestSnapshot == null ? 
    _eventStore.OpenStream(streamId) : 
    _eventStore.OpenStream(latestSnapshot, int.MaxValue))
{
    // Add events and commit
    stream.Add(new EventMessage());
    stream.CommitChanges(Guid.NewGuid());

    // Add a new snapshot (with no payload)
    _eventStore.Advanced.AddSnapshot(
        new Snapshot(streamId, stream.StreamRevision, string.Empty));
}      

可能没有必要经常添加新快照。这只是一个展示快照如何工作的例子。