首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NEventStore头翻修术

NEventStore头翻修术
EN

Stack Overflow用户
提问于 2015-02-01 15:45:54
回答 1查看 622关注 0票数 5

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

NEventStore.OpenStream(int.MinValue, int.MaxValue)最初打开流需要很长的时间;之后我存储最后的修订版,然后只在NEventStore.OpenStream(lastRevision, int.MaxValue)上追加。问题才刚刚开始。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 07:40:17

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

此示例从最新快照中打开流,并在事件发生后添加新快照。

代码语言:javascript
复制
// 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));
}      

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28264533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档