Muss ich dasselbe Akka ActorSystem wiederverwenden oder kann ich einfach jedes Mal eines erstellen, wenn ich eines benötige?

Akka 2.x benötigt viele Befehle, um auf ein zu verweisenActorSystem. So erstellen Sie eine Instanz eines SchauspielersMyActor man könnte sagen:

val system = ActorSystem()
val myActor = system.actorOf(Props[MyActor])

Wegen des häufigen Bedarfs an einerActorSystem: Viele Codebeispiele lassen die Erstellung aus dem Code weg und setzen voraus, dass der Leser weiß, wo einsystem Variable ist von gekommen.

Wenn Ihr Code Akteure an verschiedenen Stellen produziert, können Sie diesen Code duplizieren und möglicherweise zusätzliche erstellenActorSystem Instanzen, oder Sie könnten versuchen, das gleiche zu teilenActorSystem Beispiel durch Bezugnahme auf eine globale oder durch die Weitergabe derActorSystem um.

Die Akka-Dokumentation bietet eineAllgemeiner Überblick über Akteursysteme unter der Überschrift "Actor Systems", und es gibtDokumentation derActorSystem Klasse. Beides hilft jedoch nicht viel, um zu erklären, warum sich ein Benutzer von Akka nicht einfach darauf verlassen kann, dass Akka dies unter der Haube erledigt.

Fragen)

Was bedeutet es, dass man dasselbe teilt?ActorSystem Objekt oder jedes Mal ein neues erstellen?

Was sind die Best Practices hier? HerumreichenActorSystem die ganze Zeit scheint überraschend hartnäckig.

Einige Beispiele geben dieActorSystem ein Name:ActorSystem("MySystem") andere rufen einfach anActorSystem(). Welchen Unterschied macht das und was, wenn Sie denselben Namen zweimal verwenden?

Tutakka-testkit erfordern, dass Sie eine gemeinsameActorSystem mit dem, den du an den weitergibstTestKit Konstrukteur?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage