6
Ich habe die folgenden aufeinanderfolgenden Aktionen auf zwei Akteure, ein ElternteilP und ein KindC:Akka Kontext Uhr/unwatch passiert-vor Beziehung
- PC Uhren (
context watch c
) - P Unwatches C (
context unwatch c
) - P stoppt C anmutig (
c ! PoisonPill
)
Was will ich wissen, ist; bin ich garantiert, dass Pnicht ein Terminated
Ereignis für C erhalten?
Hier ist ein Beispiel Stück Code
class HappensBefore extends App {
class C extends Actor { def receive = {} }
class P extends Actor {
val c = context actorOf Props[C]
context watch c
context unwatch c
c ! PoisonPill
def receive = { case Terminated(child) => println("Oh Noes!") }
}
ActorSystem("test") actorOf Props[P]
}
Viktor - danke für die Antwort. Gibt es einen Weg dahin? Es ist wichtig, dass in meinem Fall der Akteur 'P' sich selbst als Zuhörer von' C' abmelden kann, so dass, wenn er anschließend 'C' stoppt, er kein' Terminated' Ereignis erhält. Gibt es eine Möglichkeit, einen 'onSuccess'-Aufruf an den 'unwatch'-Aufruf anzuhängen? Was nützt sonst * unwatching *? –
Sie wissen nicht, ob C aus irgendeinem anderen Grund beendet wird. Nun, es könnte einfach funktionieren und dies 100% der Zeit tun, aufgrund der Art, wie es derzeit implementiert ist. Wir garantieren das nicht. –
Entschuldigung, ich hätte expliziter sein sollen. Es gibt nur einen Anruf, der C stoppt; das ist die in Schritt 4 –