Skocz do zawartości

AKKA .NET – definiowanie ścieżki aktora


DevStart Blogi

Recommended Posts

W poprzednim poście użyliśmy metody ActorSelection w celu uzyskania referencji do aktora:

var actor1 = system.ActorSelection("/user/ApplicationUserControllerActor/Piotr")

Dzisiaj chciałbym bardziej skupić się na definiowaniu ścieżki do aktora. Pełna ścieżka może zawierać następujące elementy:
– protokół
– nazwa systemu
– adres ip aktora
– seria nazw aktorów opisująca hierarchie np. ApplicationUserControllerActor/actor1/actor2 itp.

Załóżmy, że nasz aktor znajduje się na innym komputerze. Oznacza to, aby wysłać jakieś wiadomości do niego musimy skorzystać z protokołu sieciowego. Nazwa ścieżki będzie wtedy wyglądać:

akka.tcp://FooHierarchySystem@89.124.43.14/user/ApplicationUserControllerActor/Piotr

Jeśli nie korzystamy ze zdalnych aktorów, wtedy moglibyśmy napisać:

akka://FooHierarchySystem/user/ApplicationUserControllerActor/Piotr

W poprzednim poście jednak nie musieliśmy podawać nazwy systemu (FooHierarchySystem). Wynika to z faktu, że akka .net wspiera ścieżki relatywne. ActorSlection wywoływaliśmy bezpośrednio na systemie, zatem nie było potrzeby precyzowania tego w ścieżce. Można to porównać do ścieżek relatywnych występujących w systemie plików.

Załóżmy, że jesteśmy teraz w aktorze ApplicationUserControllerActor i hierarchia jest taka sama jak w poprzednim wpisie:
controller

W celu uzyskania dostępu do jednej z instancji ApplicationUserActor możemy:

// Pierwsze podejście
Context.ActorSelection("akka://FooHierarchySystem/user/ApplicationUserControllerActor/Piotr");
// Drugie podejście
Context.ActorSelection("user/ApplicationUserControllerActor/Piotr");
// Trzecie podejście
Context.ActorSelection("Piotr");

Wszystkie ścieżki wskazują na tego samego aktora, a dwie ostatnie są relatywne. Podobnie z ApplicationUserControllerActor możemy:

Context.ActorSelection("../../ApplicationUserControllerActor").Tell(new AddUser("AnotherUser"));

Tak jak w ścieżkach systemu plików, ../ oznacza wejście o jeden poziom do góry. W powyższym przykładzie ../../ da nam referencję na /user, a potem schodzimy z powrotem na ApplicationUserControllerActor.

Wyświetl pełny artykuł

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...