我在 Petabridge 博客上阅读了Akka.Persistence 介绍,我发现这部分代码有点混乱:
Recover<string>(str => _msgs.Add(str)); // from the journal
Recover<SnapshotOffer>(offer => {
var messages = offer.Snapshot as List<string>;
if(messages != null) // null check
_msgs = _msgs.Concat(messages);
});
您可能想要在恢复时做的是......首先拍摄最后一个快照,然后重播日志中的消息。
但是这里我们有两个Recover()
声明,第一个是期刊。当 Akka .NET 执行恢复时,这些Recover()
方法的顺序实际上是如何发挥作用的呢?