Während ich Code innerhalb eines Aktors ausführe, muss ich prüfen, ob der Aktor noch lebt. Wäre das ratsam oder gibt es einen besseren Weg?Überprüfen, ob ein Scala/Akka-Aktor beendet ist
if (self != akka.actor.DeadLetter) {
// do something
}
Vielen Dank!
EDIT ---
Vielen Dank für Ihre Eingaben. Was passiert, ist folgendes. Ich benutze Play. Wenn mein Akteur startet, wird nach einer eingehenden Anfrage ein Timeout geplant.
Manchmal wird der Aktor aus anderen Gründen gestoppt, bevor das Zeitlimit abläuft (z. B. wenn der Client die Verbindung trennt). In diesem Fall, was ich sehe dann in den Protokollen ist
Actor[akka://application/deadLetters], timeout expired.
Zu meinem Verständnis bedeutet dies, dass die Standard deadLetters
Schauspieler, dass Code ausgeführt wird. Meine Frage ist also wirklich: Was ist der beste Weg zu überprüfen, ob der Promise-Code ausgeführt wird, nachdem der Akteur beendet wurde, und zu verhindern, dass er weitergeht, wenn das der Fall ist?
Danke für Ihre Antwort. Können Sie sich meine Fragenbearbeitung ansehen? Es erklärt besser das Problem, berücksichtigt Ihre Bemerkung über den Code in toten Schauspielern. – ticofab
Hallo Fabio :) Sie könnten versuchen, etwas mit postStop für diesen Schauspieler zu tun, wie der andere Autor vorgeschlagen (dies ist die Methode, die aufgerufen werden sollte, wenn die Schauspieler beendet). Zum Beispiel, senden Sie eine Nachricht an einen anderen (beobachtenden) Akteur, der den Kontext verändern würde? Oder verwenden Sie eine andere externe Synchronisierung. – Ashalynd