使用Akka Persistence Typed删除旧快照

时间:2018-10-17 11:52:20

标签: scala akka-persistence akka-typed

我没有找到一种方法(文档和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)

0 个答案:

没有答案