Scala 如何验证持久化过程是否已完成,以便正常关闭系统?

Scala 如何验证持久化过程是否已完成,以便正常关闭系统?,scala,akka,akka-persistence,Scala,Akka,Akka Persistence,使用akka actor-我向actor发送大量更新其状态的消息 for (i <-0 to 100000){ persistentActor ! Cmd("foo"+i) } 如何验证持久化过程是否已完成,以便正常关闭系统?快照持久化后,您的参与者将收到确认: var count = 0 var shutdown = false def checkShutDown() = if (shutdown && count == 0) context stop sel

使用akka actor-我向actor发送大量更新其状态的消息

for (i <-0 to 100000){
  persistentActor ! Cmd("foo"+i)
}

如何验证持久化过程是否已完成,以便正常关闭系统?

快照持久化后,您的参与者将收到确认:

 var count = 0
 var shutdown = false
 def checkShutDown() = if (shutdown && count == 0) context stop self

 def receive = {
     case "snap"  => count++; saveSnapshot(state)
     case SaveSnapshotSuccess(metadata)         =>
         count --; checkShutDown()
     case SaveSnapshotFailure(metadata, reason)  =>
         count --; checkShutDown()
     case ShutDown => 
         shutdown = true; checkShutDown()
 }
最后,您可以使用在actors关闭后关闭系统

 var count = 0
 var shutdown = false
 def checkShutDown() = if (shutdown && count == 0) context stop self

 def receive = {
     case "snap"  => count++; saveSnapshot(state)
     case SaveSnapshotSuccess(metadata)         =>
         count --; checkShutDown()
     case SaveSnapshotFailure(metadata, reason)  =>
         count --; checkShutDown()
     case ShutDown => 
         shutdown = true; checkShutDown()
 }