अक्का क्लस्टर-शेर्डिंग दिखता है जैसे यह एक उपयोग मामले के साथ अच्छी तरह से मेल खाता है, मुझे अक्का नोड्स में राज्यव्यापी लगातार कलाकारों के एकल उदाहरण बनाना है।अक्का क्लस्टर-शेरिंग: क्या एंट्री कलाकारों के पास गतिशील प्रोप
मुझे यह स्पष्ट नहीं है कि यह संभव है कि एंटर्री अभिनेता के प्रकार के लिए इसे बनाने के लिए तर्क की आवश्यकता हो। या शायद मुझे इस बात पर पुनर्विचार करने की जरूरत है कि प्रवेश अभिनेता को यह जानकारी कैसे प्राप्त होती है।
Object Account {
def apply(region: String, accountId: String): Props = Props(new Account(region, accountId))
}
class Account(val region: String, val accountId: String) extends Actor with PersistentActor { ... }
ClusterSharding.start
जबकि सभी एंट्री अभिनेताओं बनाने के लिए एक एकल प्रॉप्स उदाहरण में ले जाता है।
:
val counterRegion: ActorRef = ClusterSharding(system).start(
typeName = "Counter",
entryProps = Some(Props[Counter]),
idExtractor = idExtractor,
shardResolver = shardResolver)
और फिर यह एंट्री अभिनेता है कि आप idExtractor कैसे परिभाषित के आधार पर संदेश प्राप्त करता है हल करता है।
def getEntry(id: EntryId): ActorRef = {
val name = URLEncoder.encode(id, "utf-8")
context.child(name).getOrElse {
log.debug("Starting entry [{}] in shard [{}]", id, shardId)
val a = context.watch(context.actorOf(entryProps, name))
idByRef = idByRef.updated(a, id)
refById = refById.updated(id, a)
state = state.copy(state.entries + id)
a
}
}
यह मैं बजाय अपने क्षेत्र से बाहर मेरी एंट्री अभिनेता आंकड़ा है और चाहिए लगता है: ठीकरा यह यह देखा जा सकता के लिए स्रोत कोड से किसी दिए गए प्रवेश अभिनेता उदाहरण के लिए नाम के रूप में आईडी का उपयोग करता है खाते द्वारा नाम दिया गया है, हालांकि यह अब थोड़ा हैकी महसूस करता है कि मैं इसे सीधे मूल्य प्राप्त करने के बजाय स्ट्रिंग से बाहर निकाल रहा हूं। क्या यह मेरा सबसे अच्छा विकल्प है?
विचारों के लिए धन्यवाद। प्रश्न के पहले भाग के सीधा जवाब के रूप में हमने केवल निहित किया है, क्लस्टरशर्डिंग के साथ डायनामिक प्रोप का समर्थन करने के लिए कोई अंतर्निहित तरीका नहीं है। तो यह आपके उत्तर का संदर्भ देता है कि मेरे अनुवर्ती प्रश्न से संबंधित 'क्या यह मेरा सबसे अच्छा विकल्प है?' जो मुझे विश्वास है कि आपने अच्छा जवाब दिया है। – Rich
हाँ, मैं अनिश्चित था कि इसे पूरी तरह से निकालना बेहतर था या इसे गैर काम करने के रूप में चिह्नित करना बेहतर था ताकि शायद अक्का में कोई इसे उठाएगा * विंक विंक * (या कम से कम लोगों को पता चलेगा कि यह एक विकल्प नहीं है और बर्बाद नहीं होगा कोशिश कर रहे समय)। इसके अलावा, शायद इंजेक्शनप्रॉप में गिस और हैकिंग के साथ कुछ प्राप्त करना संभव होगा, मैंने कहीं ऐसा कुछ देखा है, दुर्भाग्यवश मुझे विवरण याद नहीं है। –