スナップショットストア内の古いスナップショットを簡単にクリーニングする:成功したスナップショットごとに、アクターはシーケンス番号を示すメタデータを含むsaveSnapshotSuccess
を受け取ります。スナップショットSnapshotSelectionCriteria
を入力し、deleteSnapshots
に入力してください。Akka永続性:ジャーナル内の「古い」メッセージを削除する
しかし、持続メッセージの場合はsaveSnapshotSuccess
に相当しません。したがって、「最後のメッセージ」のシーケンス番号がジャーナルに何であるかを知ることはできない。潜在的に永続メッセージのローカルキャッシュを保持して、それをスナップショットしてdeleteMessages
を呼び出すために使用することができますが、それはあまりにも面倒です。
最後のシーケンス番号が何であるかの指標を得るために俳優のためのメッセージを持続し、その後、多分、私たちは俳優の状態をスナップショットと仮定して(、val seqNr = sequenceNumberObtainedFromReadJournal - 100
が言うとdeleteMessages
を呼び出す受信するpersistence-query
を使用する方法はあります50メッセージごとに)
P.S. deleteMessages
に渡すためのシーケンス番号の選択はもちろん、上記より少し複雑です。たとえジャーナルからアクターの最後のメッセージのシーケンス番号を取得する方法があっても、可能性について心配する必要があります最後の3つのスナップショットは失敗しているので、100と50を使用するのと同じくらい簡単ではありません)、実装はもう少し複雑になりますが、少なくとも永続シーケンス数でスナップショットタイプを汚染しているわけではありません。