gpt4 book ai didi

c# - 获取 NEventStore head 修订版

转载 作者:太空狗 更新时间:2023-10-29 23:30:44 36 4
gpt4 key购买 nike

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

NEventStore.OpenStream(int.MinValue, int.MaxValue) 最初打开流需要很长时间;之后,我存储最后一个修订版,从那时起,仅 NEventStore.OpenStream(lastRevision, int.MaxValue) 再次追加。问题仅在初始启动时。

NEventStore 中是否有一种机制可以在不打开的情况下简单地追加,或者在不打开整个流的情况下确定头部修订,以便我可以从上一个版本打开并追加。当然,我也可以直接访问数据库并进行查询,但我认为我不应该需要这种依赖性。

最佳答案

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

此示例从最新快照打开一个流,并在事件提交后添加一个新快照。

// 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));
}

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

关于c# - 获取 NEventStore head 修订版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28264533/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com