maxNrOfRetries withinTimeRange OneForOneStrategy restart(); resume(). , 11 , , , 11 .
Exception, , , resume(). -t25 > (.. Error), escalate(). , Error, .
, Map ActorRef , . , sender . , , . - ( Scala, Java):
class Parent extends Actor {
override val supervisorStrategy =
OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {
case _: Exception =>
val child = sender
resumeCounts.get(child) match {
case Some(count) if count == resumeMax =>
child ! StopDB
case Some(count) =>
resumeCounts = resumeCounts + (child -> count + 1)
case None =>
resumeCounts = resumeCounts + (child -> 1)
}
Resume
case _ => Escalate
}
val resumeMax = 10
var resumeCounts: Map[ActorRef, Int] = Map.empty[ActorRef, Int]
def receive = ???
}
, .
restart(), , " , maxNrOfRetries withinTimeRange ." , postStop hook. , postStop.