2017-08-16 50 views
3

清理快照存儲區中的舊快照非常簡單:每次成功快照後,參與者都會收到一個saveSnapshotSuccess,元數據指示其序列號,該信息可用於構造快照SnapshotSelectionCriteria,然後送到deleteSnapshotsAkka持久性:刪除日記中的「舊」消息

然而,對於持久性消息,沒有等同於saveSnapshotSuccess。因此,不可能知道期刊中「最後一條」消息的序列號。可以保留持續消息的本地緩存計數並將其快照,以用於調用deleteMessages,但這太枯燥乏味。

是否有使用persistence-query接收上次持續消息一個演員得到的序列號是什麼的指示,然後也許調用deleteMessages有說val seqNr = sequenceNumberObtainedFromReadJournal - 100,(假設我們快照演員的狀態的方式,每50封郵件後說)?

P.S. 傳遞到deleteMessages的序列號的選擇當然比上面提到的要複雜一點:即使有一種方法可以從日誌中獲取演員的最後一條消息的序列號,但人們不得不擔心這種可能性比如說最後三個快照失敗了,所以它不如使用100和50那麼簡單),所以實現會涉及更多一點,但至少我們不會用持久性序列計數來污染快照類型。

回答

1

您可以簡單地從您的持續演員呼叫lastSequenceNr