2017-08-16 12 views
3

スナップショットストア内の古いスナップショットを簡単にクリーニングする:成功したスナップショットごとに、アクターはシーケンス番号を示すメタデータを含むsaveSnapshotSuccessを受け取ります。スナップショットSnapshotSelectionCriteriaを入力し、deleteSnapshotsに入力してください。Akka永続性:ジャーナル内の「古い」メッセージを削除する

しかし、持続メッセージの場合はsaveSnapshotSuccessに相当しません。したがって、「最後のメッセージ」のシーケンス番号がジャーナルに何であるかを知ることはできない。潜在的に永続メッセージのローカルキャッシュを保持して、それをスナップショットしてdeleteMessagesを呼び出すために使用することができますが、それはあまりにも面倒です。

最後のシーケンス番号が何であるかの指標を得るために俳優のためのメッセージを持続し、その後、多分、私たちは俳優の状態をスナップショットと仮定して(、val seqNr = sequenceNumberObtainedFromReadJournal - 100が言うとdeleteMessagesを呼び出す受信するpersistence-queryを使用する方法はあります50メッセージごとに)

P.S. deleteMessagesに渡すためのシーケンス番号の選択はもちろん、上記より少し複雑です。たとえジャーナルからアクターの最後のメッセージのシーケンス番号を取得する方法があっても、可能性について心配する必要があります最後の3つのスナップショットは失敗しているので、100と50を使用するのと同じくらい簡単ではありません)、実装はもう少し複雑になりますが、少なくとも永続シーケンス数でスナップショットタイプを汚染しているわけではありません。

答えて

1

あなたの永続アクタからlastSequenceNrを呼び出すことができます。

関連する問題