2011-11-10 15 views
5

ओओएम से बचने के लिए, मैं अपने कुछ एक्का 1.1.3 कलाकारों के मेलबॉक्स आकार को एक साझा कस्टम प्रेषक के साथ बाध्य कर रहा हूं। उदाहरण के लिए:हैंडल अक्का अभिनेता बाध्य मेलबॉक्स संदेश QueueAppendFailedException

object Static { 
    val dispatcher = Dispatchers.newExecutorBasedEventDrivenWorkStealingDispatcher(
     "customDispatcher", 
     1000, 
     BoundedMailbox(capacity = 10) 
    ) 
} 

class MyActor extends Actor { 
    self.dispatcher = Static.dispatcher 
    ... 
} 

मैं चाहता तो मैं संदेश नदी के ऊपर उत्पादकों को रोकने के लिए कर सकते हैं बह निकला मेलबॉक्स करने के लिए प्रतिक्रिया करने के लिए (ओर ध्यान दें: यह दुर्भाग्य से लग रहा है actor.stop() की तरह, प्रतीक्षा करें, और actor.start() एक ActorStartException फेंक होगा)। कतार भरने और कतार को थोड़ा सा निकालने के बीच कुछ डेटा हानि स्वीकार्य है।

Dispatchers पर अक्का के अध्याय का कहना है

जब अभिनेता के लिए एक संदेश है कि यह एक MessageQueueAppendFailedException फेंक होगा भेजने की कोशिश कर ("BlockingMessageTransferQueue हस्तांतरण का समय समाप्त") यदि संदेश में मेलबॉक्स को जोड़ा नहीं जा सकता pushTimeout द्वारा निर्दिष्ट समय।

मैं इस अपवाद को कहां पकड़ सकता हूं?

प्रलेखन यह ध्वनि बनाता है जैसे मुझे प्रत्येक myActor ! message को कोशिश/पकड़ में लपेटने की आवश्यकता होती है। क्या वह सही है? मैं वास्तव में अपने हैंडलिंग को केंद्रीकृत करना चाहता हूं। क्या मेरा Supervisor शायद इसे रोक सकता है और अपना हैंडलर चला सकता है?

+0

इसका निरीक्षण करने का उद्देश्य क्या है? –

+0

यह सुनिश्चित नहीं है कि यह आपके विशिष्ट मामले पर लागू होगा, लेकिन यदि आप उन परिस्थितियों में भाग ले रहे हैं जहां आप मेलबॉक्सों को बहने का जोखिम लेते हैं, तो आप एक "पुल" डिज़ाइन पर विचार करना चाहेंगे जहां आपके उपभोक्ता कलाकार निर्माता के बजाय निर्माता से काम मांगते हैं अपने उपभोक्ताओं को स्पैमिंग। –

+0

@ विक्टर इसे अपस्ट्रीम एक्शन लेना है, खासकर उपभोक्ताओं को रोकने के लिए (मैं इसे प्रश्न में जोड़ दूंगा)। दान सही है, और मैं निश्चित रूप से पुल मॉडल पर विचार करूंगा। हालांकि मैं अभी थोड़ा पुनर्चक्रण के साथ ऐसा करना चाहता हूं, और डेटा हानि स्वीकार्य है। – Bluu

उत्तर

0

cc.spray.json._ का उपयोग करने का प्रयास करें क्योंकि यह अक्का या ट्विटर के फाइनल के शीर्ष पर बनाया गया है।

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