清理快照存储区中的旧快照非常简单:每次成功快照后,参与者都会收到一个saveSnapshotSuccess
,元数据指示其序列号,该信息可用于构造快照SnapshotSelectionCriteria
,然后送到deleteSnapshots
。Akka持久性:删除日记中的“旧”消息
然而,对于持久性消息,没有等同于saveSnapshotSuccess
。因此,不可能知道期刊中“最后一条”消息的序列号。可以保留持续消息的本地缓存计数并将其快照,以用于调用deleteMessages
,但这太枯燥乏味。
是否有使用persistence-query
接收上次持续消息一个演员得到的序列号是什么的指示,然后也许调用deleteMessages
有说val seqNr = sequenceNumberObtainedFromReadJournal - 100
,(假设我们快照演员的状态的方式,每50封邮件后说)?
P.S. 传递到deleteMessages
的序列号的选择当然比上面提到的要复杂一点:即使有一种方法可以从日志中获取演员的最后一条消息的序列号,但人们不得不担心这种可能性比如说最后三个快照失败了,所以它不如使用100和50那么简单),所以实现会涉及更多一点,但至少我们不会用持久性序列计数来污染快照类型。