के बाद अभिनेता के नाम का हमेशा पुन: उपयोग नहीं कर सकता है मैंने अभिनेताओं के लिए अक्का के "ग्रेसफुल स्टॉप" का अध्ययन किया और इसका परीक्षण करने के लिए एक छोटा परीक्षण ऐप बनाया।सुंदर स्टॉप
आवेदन से पता चलता है कि "मनोहर बंद करो" http://doc.akka.io/docs/akka/snapshot/scala/actors.html#Graceful_Stop में उल्लेख नहीं हमेशा गारंटी नहीं है कि आप पुन: उपयोग कर सकते हैं शान से अभिनेता का नाम बंद कर दिया।
हर अब और फिर निम्नलिखित अपवाद प्रकट होता है:
Exception in thread "main" akka.actor.InvalidActorNameException: actor name [DummyActor] is not unique!
कि क्यों है? मैं ऐप को कैसे ठीक कर सकता हूं ताकि अवैध डोमेन नाम अपवाद अब और फिर प्रकट न हों?
मुख्य वर्ग ...
import akka.actor._
import akka.pattern.gracefulStop
import DummyActor.Stop
import DummyActor
import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
object AkkaTest {
def main(args: Array[String]) {
val actorsystem = ActorSystem("testSystem")
1 to 5 foreach { _ =>
// Create an actor with name: DummyActor
val dummyActor = actorsystem.actorOf(Props[DummyActor], "DummyActor")
// Gracefully stop the DummyActor
val stopped: Future[Boolean] = gracefulStop(dummyActor, 5 seconds, Stop)
Await.result(stopped, 6 seconds)
}
val terminated: Future[Terminated] = actorsystem.terminate()
Await.result(terminated, 10 seconds)
System.out.println("Finished successfully. Try again, eventually it will fail. You can also increase the amount of loops.")
}
}
और अभिनेता ...
import akka.actor.Actor
import DummyActor.Stop
object DummyActor {
case object Stop
}
class DummyActor extends Actor {
override def receive: Receive = {
case Stop => context stop self
}
}
मैं स्काला 2.11.7 और जावा 8 और अक्का के साथ है:
यहाँ कोड है 2.4.0।
लिंक आप जुड़ा हुआ है और यहां इसके बाद पर हमनाम शुरू: चेतावनी कि एक अभिनेता को रोकने और उसके नाम विपंजीकृत की जा रही अलग घटनाओं जो एसिंक्रोनस रूप से हो रहे हैं ध्यान में रखें एक दूसरे से। इसलिए यह हो सकता है कि आपको gracefulStop() लौटाए जाने के बाद भी नाम का उपयोग मिल जाएगा। उचित अपंजीकरण की गारंटी के लिए, केवल पर्यवेक्षक के भीतर से नामों का पुन: उपयोग करें और केवल एक समाप्ति संदेश के जवाब में, यानी शीर्ष-स्तरीय कलाकारों के लिए नहीं। तो पर्यवेक्षक अभिनेता बनाएं और केवल 'समाप्ति' रिसेप्शन पर नामांकन शुरू करें – Odomontois