2017-08-16 136 views
3

清理快照存储区中的旧快照非常简单:每次成功快照后,参与者都会收到一个saveSnapshotSuccess,元数据指示其序列号,该信息可用于构造快照SnapshotSelectionCriteria,然后送到deleteSnapshotsAkka持久性:删除日记中的“旧”消息

然而,对于持久性消息,没有等同于saveSnapshotSuccess。因此,不可能知道期刊中“最后一条”消息的序列号。可以保留持续消息的本地缓存计数并将其快照,以用于调用deleteMessages,但这太枯燥乏味。

是否有使用persistence-query接收上次持续消息一个演员得到的序列号是什么的指示,然后也许调用deleteMessages有说val seqNr = sequenceNumberObtainedFromReadJournal - 100,(假设我们快照演员的状态的方式,每50封邮件后说)?

P.S. 传递到deleteMessages的序列号的选择当然比上面提到的要复杂一点:即使有一种方法可以从日志中获取演员的最后一条消息的序列号,但人们不得不担心这种可能性比如说最后三个快照失败了,所以它不如使用100和50那么简单),所以实现会涉及更多一点,但至少我们不会用持久性序列计数来污染快照类型。

回答

1

您可以简单地从您的持续演员呼叫lastSequenceNr