In einer Clusterumgebung habe ich einen Seed-Knoten und node1 und node2.Akka.net: Zugriff auf entfernte Akteure in Cluster
Von Knoten1 Ich möchte eine Nachricht an einen Akteur senden, der auf Knoten2 erstellt wurde. Der lokale Pfad zu diesem Knoten auf Knoten2 ist akka: MyAkkaSystem/user/AnActor.
Jetzt möchte ich unter Verwendung eines ActorSelection so eine Nachricht von einem Schauspieler von node1 zu diesem speziellen Schauspieler senden:
var actorSystem = ActorSystem.Create("MyTestSystem");
var c = actorSystem.ActorSelection("/user/ConsoleReceiver");
c.Tell("Hello World");
Auf dem Schauspieler clusternode2 hat so geschaffen:
var actorSystem = ActorSystem.Create("MyTestSystem");
var r = actorSystem.ActorOf(Props.Create<MessageReceiver>(), "ConsoleReceiver");
Console.WriteLine(r.Path);
Console.ReadLine();
actorSystem.Terminate().Wait();
Leider klappt das nicht, da der Versuch in toten Buchstaben endet.
Die HOCON Konfiguration auf Knoten2 sieht wie folgt aus:
akka {
actor {
provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
deployment {
}
}
remote {
log-remote-lifecycle-events = DEBUG
log-received-messages = on
helios.tcp {
transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
applied-adapters = []
transport-protocol = tcp
hostname = "127.0.0.1"
port = 0
}
}
cluster {
#will inject this node as a self-seed node at run-time
seed-nodes = ["akka.tcp://[email protected]:4053"] #manually populate other seed nodes here, i.e. "akka.tcp://[email protected]:4053", "akka.tcp://[email protected]:4044"
roles = [crawler]
}
}
Als Samen Knoten I Leuchtturm verwende. Vom Standpunkt der Verbindung scheint alles zu funktionieren. Der Seed wurde gefunden und jeder erhaltene Knoten hat eine Willkommensnachricht erhalten.
Ich dachte, ich hätte Standorttransparenz auf einem Cluster und könnte Remote-Ressourcen erreichen, als wären sie lokal.
Gut danke. Allerdings dachte ich, dass die Knoten aufgrund von Cluster-Klatsch miteinander verbunden waren. Also, wenn die Knoten verbunden sind, warum kann ich sie nicht direkt ansprechen? –
Was meinst du mit direkt? Im ersten Abschnitt habe ich den direkten Zugriff auf den Akteur auf einem Knoten beschrieben. – Horusiath
Nun, es schien, als müssten Sie einen weiten Weg zurücklegen, um zu entfernten Schauspielern zu gelangen, indem Sie Cluster, Singleton, Sharding, Pub/Sub usw. abfragen (was großartige Eigenschaften sind). Aber da die Knoten bereits verbunden sind, gibt es keinen einfacheren Weg, indem man sagt: ActorSelection ([Rolle des Knotens]/[Pfad zum Akteur]) oder es mit einiger raffinierter HOCON-Magie auf der Client-Seite transparent machen? –