Wie wählt man akka actor mit actorSelection?

8

Ich versuche einen Akteur auszuwählen, der bereits erstellt wurde. Hier ist ein Code:

%Vor%

Das Ergebnis ist:

%Vor%

Ich kann auch eine Nachricht an den Schauspieler weitergeben und es wird gut abgeschlossen. Was habe ich bei actorSelection verpasst? Wie wählt man den Schauspieler richtig aus?

AKTUALISIERT

Es ist sehr seltsam, aber wenn ich system.actorSelection("/user/myActorName/").resolveOne().value ersetze mit system.actorFor("/user/myActorName/") funktioniert alles. Ich meine actorFor gibt einen Schauspieler zurück. (Was keine richtige Lösung ist, weil actorFor veraltet ist)

    
Cherry 24.10.2014, 05:03
quelle

1 Antwort

10

Bitte seien Sie vorsichtig mit Futures. In Ihrem Fall erhalten Sie eine Zukunft, die im aufrufenden Moment möglicherweise nicht abgeschlossen ist - daher ist der Wert möglicherweise leer:

%Vor%

vs

%Vor%

Um Wert korrekt zu erhalten, verwenden Sie onComplete oder nur for-compreshesion:

%Vor%

Beachten Sie, dass onComplete / for als Listener implementiert sind, sodass sie möglicherweise in einem anderen Thread ausgeführt werden. Wenn Sie das Ergebnis im aktuellen Thread benötigen, verwenden Sie die klassische Await.result .

>     
dk14 24.10.2014, 05:27
quelle

Tags und Links