जब आप एक अभिनेता के अंदर context.actorSelection
का उपयोग करते हैं, तो आप जो कह रहे हैं वह इस अभिनेता नियंत्रण (प्रारंभ/पर्यवेक्षित द्वारा) के तहत एक अभिनेता को ढूंढता है। चूंकि अभिनेता 1 शायद अभिनेता 2 द्वारा शुरू नहीं किया गया था (या अभिनेता 2 द्वारा पर्यवेक्षित नहीं किया गया है), तो यह किसी भी चीज़ का समाधान नहीं करेगा। अगर अभिनेता 1 वास्तव में अभिनेता 2 द्वारा स्वामित्व/शुरू किया गया था तो आप शायद अभिनेता 2 के उस बच्चे अभिनेता को पाने के लिए context.actorSelection("/actor1")
कर सकते थे। context.system.actorSelection
का कारण यह है कि आप अपनी खोज शुरू करने और अभिनेता के मार्ग को पूरी तरह योग्य बनाने से पहले "अप" system
पर जा रहे हैं। अगर आप इसे system.actorOf
के रूप में शुरू करते हैं, तो सिस्टम "मालिक" का मालिक है, इसलिए उस पथ का उपयोग करने से आप इसे system
से शुरू कर सकते हैं।
एक छोटी सी कोड को दिखाने के लिए मैं क्या मतलब है:
class Actor1 extends Actor{
override def preStart = {
context.actorOf(Props[Actor2], "actor2")
}
def receive = {
case _ =>
}
}
class Actor2 extends Actor{
override def preStart = {println("my path is: " + context.self.path)}
def receive = {
case _ =>
}
}
object FutureTesting {
def main(args: Array[String]) {
val sys = ActorSystem("test")
implicit val ec = sys.dispatcher
//Starting an Actor2 from system
sys.actorOf(Props[Actor2], "actor2")
//Starting an Actor1 from system which in turn starts an Actor2
sys.actorOf(Props[Actor1], "actor1")
}
}
जब आप इस उदाहरण चलाने के लिए, आप देखेंगे:
my path is: akka://test/user/actor1/actor2
my path is: akka://test/user/actor2
तो आप देख सकते मैं में चल रहा Actor2
के 2 उदाहरणों है मेरी प्रणाली; sys
से सीधे /user/actor2
से जुड़ा हुआ एक लुकअप पथ के रूप में बनाया गया है और Actor1
के उदाहरण से शुरू हुआ है, जो इसके पथ के लिए /user/actor1/actor2
से जुड़ा हुआ है।
अभिनेता प्रणाली पदानुक्रमित है और यह उदाहरण दिखाता है। ActorSystem
स्वयं सब कुछ के लिए जड़ है। अभिनेताओं का चयन तब XPath के समान होता है जिसमें संदर्भ आप मामलों से चयन जारी कर रहे हैं।
निम्नलिखित प्रदान करें: 2) कोड पता चलता है कि कैसे 'actor1' 3 बनाई गई है) आप से क्या मतलब है 1) स्काला/अक्का संस्करणों" नहीं है काम"? क्या यह संकलित करता है? क्या यह रनटाइम पर अपवाद फेंकता है? क्या 'अभिनेता 1' को 'हैलो रिस्पॉन्स ("हैलो बैक 1") संदेश नहीं मिला है? त्रुटि संदेश क्या कहता है? – agilesteel
मैंने ब्याज के लिए धन्यवाद, काम नहीं करने के बारे में एक स्पष्टीकरण जोड़ा। – lujop