2016-02-26 13 views
5

Używanie Akka.net ze zdalnym uruchamianiem. This article posiada następujące do powiedzenia na temat korzystania ActorSelection:Akka.Net Remoting: ActorSelection vs. IActorRef

innym razem, kiedy mają tendencję do korzystania z ActorSelection jest gdy jestem początkowo komunikacji ze zdalnym systemem aktora.

Nie do końca rozumiem, jak przekonwertować tę początkową funkcję ActorSelection na IActorRef, z której mogę dalej korzystać.

Odpowiedz

8

Najprostszym sposobem jest tutaj użycie metody actorSelection.ResolveOne(timeout), która zwróci Task<IActorRef>. Zadanie może również kończyć się limitem czasu lub ActorNotFoundException w przypadku, gdy nie znaleziono aktora pod podaną ścieżką.

Innym - bardziej aktorsko-idiomatycznym - sposobem jest wysłanie wiadomości Identify(correlationId) do wyboru aktora. Powinien odpowiedzieć z odpowiedzią ActorIdentity(correlationId, actorRef). Bądź świadomy, że może w ogóle nie odpowiadać, jeśli nie było nikogo, kto by nasłuchiwał pod podanym wyborem aktor.

+0

Więc w którą stronę powinienem wybrać? – Max

+2

Zasadą jest, że aktorzy wolą używać wiadomości nad zadaniami. Więc, kiedy rozwiązujesz 'IActorRef' z wyboru aktora wewnątrz aktora, użyj' Identify' i ustaw odbiornik dla 'ActorIdentity'. Podczas rozwiązywania spoza systemu aktorskiego użyj 'ResolveOne'. – Horusiath

Powiązane problemy