में अनुरोध संदर्भ पासिंग परोक्ष मैं सहयोग अभिनेताओं में से एक प्रणाली में परोक्ष एक अनुरोध संदर्भ का प्रचार करना चाहते हैं।एक अभिनेता प्रणाली
को सरल बनाने और स्थिति को पेश करने के लिए, अपने सिस्टम कई अभिनेताओं और संदेशों इन अभिनेताओं को पारित कर दिया है इस RequestContext वस्तु को शामिल करने की जरूरत है।
ActorA प्रकार MessageA का संदेश प्राप्त करता ActorB प्रकार MessageB के संदेशों
जब ActorA MessageA की हैंडलिंग के भाग के रूप, ActorB के लिए एक संदेश भेजने के लिए की जरूरत है, यह व्यापार तर्क करता है, और फिर से एक MessageB निर्माण करती प्राप्त करता है तर्क के साथ-साथ MessageA में RequestContext उपलब्ध के परिणामों और फिर इसे ActorB को
def handle(ma:MessageA) {
val intermediateResult = businessLogic(ma)
actorB ! MessageB(intermediateResult, ma.requestContext)
}
भेजता हम संदेशों के एक धसान नियंत्रित किया जाना है, और स्पष्ट रूप से requestContext आसपास गुजर बोझिल है।
मैं स्काला के implicits उपयोग करने के लिए रचनात्मक तरीके की कोशिश कर रहा हूँ स्पष्ट रूप से RequestContext बाहर जाने वाले संदेश में भेजे संदेश में एम्बेडेड इंजेक्शन लगाने से बचने के लिए शामिल हैं।
संदेशों मामले वर्ग हैं (और वे होने की जरूरत है)। मैंने निहितार्थ नियमों के बारे में पढ़ा है लेकिन वर्तमान वस्तु के दायरे में किसी ऑब्जेक्ट की विशेषता लाने से दूर-दराज लगती है।
यह, मुझे यकीन है कि एक आम आवश्यकता होना चाहिए हूँ। कोई सुझाव?
धन्यवाद।
उत्तर के लिए धन्यवाद। मैंने गंभीरता से इस दृष्टिकोण को माना, लेकिन मैंने यह सोचा कि पैरामीटर को पारित करने से सुविधा का उपयोग करने के लिए सभी आयात और implicits जोड़ने से कहीं अधिक पठनीय और कम वर्बोज़ है - क्या आपको नहीं लगता? – vishr
यदि यह कोई समस्या है, तो मैं एक संदेश प्रोसेसर को कारक बनाउंगा, जो एक संदेश ए => संदेश बी है और इसे अभिनेता के शरीर में बस कॉल करें। यह टेस्टेबिलिटी भी बढ़ाएगा – Edmondo1984