我没有找到一种方法(文档和API)来删除具有Akka Persistence Typed的旧快照。通过普通的API,我使用了:
override def receiveCommand: Receive = {
case SaveSnapshotSuccess(metadata) =>
deleteSnapshots(SnapshotSelectionCriteria.create(metadata.sequenceNr, metadata.timestamp - 1))
case c: C => {
val snd = sender()
c.validate(persistenceId, state).fold(
error => snd ! Left(error),
event => {
persist(event) { _ =>
state = eventHandler.handle(event)(state)
saveSnapshot(state)
snd ! Right(event)
}
}
)
}
}
但是使用新的API,我找不到方法。
def behavior(persistenceId: String): Behavior[BoardCommand] = PersistentBehaviors
.receive[BoardCommand, BoardEvent, Option[states.Board]](
persistenceId, None,
(state, cmd)=> {
cmd.validate(persistenceId, state ).fold(
error => {
cmd.replyTo ! Left(error)
Effect.none[BoardEvent, Option[states.Board]]
},
v => {
cmd.replyTo ! Right(v)
Effect.persist(v)
})
},
(state, event)=> BoardEventHandler.handle(event)(state)
).snapshotEvery(1)