2012-11-05 12 views
5

मैं चल रहा सिस्टम प्रक्रियाओं तक पहुंच को नियंत्रित करने के लिए अक्का का उपयोग कर रहा हूं।अक्का में, क्या मैं एक अलग अभिनेता से एक संदेश खराब कर सकता हूं?

मेरे पास एक एकल कमांड एक्टर है जो सिस्टम में किसी भी अभिनेता से आने वाले कमांड अनुरोधों को संभालता है (इसे इसे अनुरोधकर्ता कहते हैं), और प्रत्येक नए अनुरोध के लिए कमांडएक्टर उस विशेष अनुरोध को संभालने के लिए एक अलग सीएमडी चाइल्डवर्कर अभिनेता को जन्म देता है। कमांडएक्टर सीएमडी चाइल्डवर्कर्स की संख्या को भी सीमित करता है, और प्रत्येक अनुरोध के लिए एक अद्वितीय आईडी निर्दिष्ट करता है, इसलिए यह एक साधारण राउटर से अधिक जटिल है।

जब आदेश पूर्ण हो जाता है, और समय-समय पर सिस्टम प्रक्रिया के निष्पादन के दौरान, CmdChildWorker कलाकार मूल अनुरोधकर्ता (जैसे अब तक प्रक्रिया आउटपुट) पर आवधिक अद्यतन भेजता है।

हालांकि, एक स्वच्छ डिजाइन को बनाए रखने के लिए, मैं उम्मीद कर रहा था कि मैं सीएमडी चाइल्डवर्कर को मूल अनुरोधकर्ता से पूरी तरह छुपा सकूंगा, जिसमें एकमात्र इंटरफ़ेस एकल कमांडएक्टर के साथ होगा।

जाहिर है, मैं कमांडएक्टर के माध्यम से सीएमडी चाइल्डवर्कर से किसी भी उत्तर संदेश भेज सकता हूं, लेकिन मैं सोच रहा था कि सीधे कमांडर के माध्यम से संदेश को रूट किए बिना CmdChildWorker से RequestActor को जवाब देना संभव है, लेकिन फिर भी यह दिखाते हुए कि संदेश कमांडएक्टर से वापस भेजा गया है।

आईई। मैं सीएमडी चाइल्डवर्कर अभिनेता प्रेषक के पते को अपने मूल अभिनेता के रूप में धोखा देना चाहता हूं। क्या यह संभव है? और शायद यह समझदार, या अच्छा अभिनेता डिजाइन अधिक महत्वपूर्ण है?

धन्यवाद

उत्तर

9

देखें अभिनेता पर tell विधि। CommandActor अपने संदेश अग्रेषित करता है, फोन:

childActor.tell(msg, sender)

और childActor मूल प्रेषक के रूप में अपनी इस करनी होगी।

+0

धन्यवाद लेखन हो सकता है! वह जवाब कैसे देता है। क्या आपको यह पता है कि यह एक अच्छा अभिनेता डिजाइन है या नहीं? –

+0

"अच्छा" कहना मुश्किल है, क्योंकि कोई हमेशा कुछ बेहतर तरीके से आ सकता है, लेकिन मैं यह नहीं कहूंगा कि यह बिल्कुल बुरा है। वास्तव में, यह अवांछित अभिनेता प्रतिमान की शक्ति है। इसके साथ तब तक जाएं जब तक यह अब कमाल नहीं है। –

+1

आपको कुछ कलाकार पैटर्न प्रस्तुतियों को देखना चाहिए। एक अलग प्रेषक के साथ 'बताओ' के माध्यम से श्रमिकों को संदेश भेजना एक लेनदेन के लिए "राज्य" संलग्न करने का एक बहुत ही आम तरीका है। आप मूल रूप से "सत्र स्थिति" को याद रखने के लिए एक अभिनेता का निर्माण करते हैं और उसे सभी जानकारी पास करते हैं। वह मूल क्वेरी का जवाब देने के लिए ज़िम्मेदार है। मैं कहूंगा कि यह एक अच्छा पैटर्न है :) – jsuereth

4

यदि मैं आपकी आवश्यकता को सही ढंग से समझता हूं तो आपको आगे का उपयोग करना चाहिए। दस्तावेज़ों से:

आप एक अभिनेता से दूसरे अभिनेता को एक संदेश भेज सकते हैं। इसका मतलब यह है कि मूल प्रेषक पता/संदर्भ बनाए रखा जाता है भले ही संदेश 'मध्यस्थ' के माध्यम से जा रहा हो। यह उपयोगी है जब अभिनेताओं के रूप में रूटर्स, लोड-बैलेंसर्स काम करते हैं, प्रतिलिपिकारों आदि

myActor.forward (संदेश)

संबंधित मुद्दे