Ich fange an Akka zu lernen, indem ich eine bestehende Java SE App dorthin migriere. Ich benutze Akka 2.0.3.
An einem Punkt muss ich eine PoisonPill durch die Nachrichtenwarteschlange senden, um die Akteure zu stoppen. Mein Akteur wird so instanziiert:
%Vor%an die ich versuche, die PoisonPill zu senden:
%Vor%Aber ich bekomme den folgenden Compilerfehler:
%Vor%Was mache ich falsch? Ich betreibe Java 1.6.0_26 in Idea (das ich auch nach einem Leben in Eclipse lerne).
Bearbeiten:
Ich habe auch diesen Ansatz, der in der Dokumentation ist, versucht, aber ich bekomme den gleichen Compiler-Fehler und Idee warnt mich, dass die Klasse Actors veraltet ist.
%Vor%Bitte lesen Sie die Akka-Dokumentation, wir haben viel Zeit damit verbracht, sie zu erstellen:
PoisonPill
Sie können einem Akteur auch die akka.actor.PoisonPill senden Nachricht, die den Akteur stoppt, wenn die Nachricht verarbeitet wird. PoisonPill wird als gewöhnliche Nachrichten eingereiht und danach behandelt Nachrichten, die bereits in der Mailbox eingereiht wurden.
Benutze es so:
%Vor%
Der obige Ansatz ist seit 2.0.2 veraltet, dies ist die neue API:
%Vor%Das obige kompiliert auf meinem Computer, so dass Sie möglicherweise ein Problem in IDEA haben? Versuchen Sie es mit javac zu kompilieren und sehen Sie, ob das funktioniert.
Wie in meiner Antwort auf den obigen Kommentar erwähnt, funktioniert das nicht in Idea oder bei der Verwendung von Gradle zum Kompilieren. Es ist tatsächlich ein Kompilierungsfehler, da der Sender ActorRef benötigt wird. Ich weiß, dass die vorherigen Antworten alt sind, und ich bin mir nicht sicher, ob dies eine Änderung in der API war, also sollte jemand, der ein ähnliches Problem hat, Folgendes verwenden:
%Vor%Als Referenz siehe: Ссылка