Akka持久性:删除" old"期刊

时间:2017-08-16 14:19:00

标签: akka akka-persistence

清理快照存储中的旧快照很简单:每次成功完成快照后,actor会收到一个saveSnapshotSuccess,其中元数据指示其序列号,此信息可用于构建快照{{1}然后被送到SnapshotSelectionCriteria

但是,对于持久消息,没有等效的deleteSnapshots。因此,无法知道" last-ish"的序列号是什么。消息在日记中。有人可能会保留持久消息的本地缓存并对其进行快照,以用于调用saveSnapshotSuccess,但这太繁琐了。

是否有办法使用deleteMessages接收最后一个持久消息,让演员得到序列号是什么,然后用persistence-query调用deleteMessages, (假设我们对演员的状态进行了快照,比如说每50条消息之后)?

P.S。 传递给val seqNr = sequenceNumberObtainedFromReadJournal - 100的序列号的选择当然比上面提到的要复杂一点:即使有一种方法可以从日志中获取演员的最后一条消息的序列号,我不得不担心最后三个快照失败的可能性,所以它不像使用100和50那么简单,所以实现会更复杂,但至少我们不会污染快照输入持久性序列计数。

1 个答案:

答案 0 :(得分:2)

您只需从持久演员中调用lastSequenceNr即可。