Wenn der Aktor fehlschlägt, muss ich die Ursache des Fehlers an einen anderen Akteur senden.Ursache der Aktor-Beendigung oder wie man Fehler behandelt
Ich weiß, es gibt Überwachungsstrategien und ich benutze sie. Das Problem ist - ich kann den richtigen Ort für solche Fehlerberichte nicht finden. Ich habe versucht, Schauspieler zu sehen, aber beendeten Nachricht bietet keinen Grund für die Kündigung. Derzeit hinzugefügt i Fehler in Decider Handhabung:
override def supervisorStrategy: SupervisorStrategy =
OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = Duration(1, TimeUnit.SECONDS), loggingEnabled = true) {
case e: Exception =>
onActorError(sender(), e)
Stop
}
Aber ich denke, dass es nicht eine gute Zeit und Ort, dies zu tun, „Decider“ sollte Strategie zurückkehren, und nicht implizit etwas anderes zu tun.
Die Frage ist also: Gibt es einen geeigneten Ort, um Akteur Ausnahmen zu fangen und etwas dagegen zu tun?
Der Aktor wird gestoppt, nicht neu gestartet. So postRestart wird wahrscheinlich nie aufgerufen werden –
postStop sollte nach dem stop() unabhängig aufgerufen werden. –
ja, aber PostStop hat keine Argumente ... So gibt es keine Möglichkeit, die Ursache des Stopps an diesem Punkt –