मैं ऐसे डेटाबेस में कॉल करना चाहता हूं जिसमें बहुत सारे डेटा हैं और इसमें कुछ समय लग सकता है।डेटाबेस एक्सेस के लिए प्ले और अक्का और अवरुद्ध थ्रेड्स
मैं उस काम को Akka.future (f) पर कॉल करने की योजना बना रहा हूं और काम पूरा होने पर प्रतिक्रिया प्रस्तुत करने के लिए एक Async {} का उपयोग करता हूं।
क्या ऐसा करने के लिए यह समझ में आता है, या क्या मुझे अक्का में काम भेजने के बिना नियंत्रक में लंबे डेटाबेस कॉल करना चाहिए?
या डेटाबेस को अवरुद्ध करने के लिए कोई तरीका नहीं है?
डीबी कॉल ब्लॉक और मेरे आने वाले अनुरोध के लिए मेरे पास कोई अन्य काम नहीं है। लेकिन प्ले सर्वर स्वयं ही आने वाले अनुरोध को मध्य समय में संभाल सकता है। लेकिन अगर मैं अक्का को भविष्य भेजता हूं। भविष्य (काम), तो यह उसी धागे से संभाला जाता है जो किसी भी नए आने वाले अनुरोधों को संभालेगा, इसलिए मुझे नहीं लगता कि यह अक्का को पास करके कोई फर्क नहीं पड़ता। वास्तव में यह अतिरिक्त ओवरहेड भी पैदा कर सकता है। क्या इसका कोई मतलब है? –
हां, मुझे लगता है कि यह समझ में आता है। डेटाबेस कॉल पर आईओ को अवरुद्ध करने का मानना है, यह पूरा होने तक एक धागा पर कब्जा करेगा। मुझे नहीं पता कि बहुत अच्छी तरह से खेलते हैं, लेकिन इसे किसी भी उचित वेब ढांचे को अतिरिक्त अनुरोधों की सेवा से नहीं रोका जाना चाहिए। किसी अन्य ऐप के साथ डीबी सर्वर से पैकेट की प्रतीक्षा करते समय अन्य थ्रेड सीपीयू पर निर्धारित किए जा सकते हैं, और प्ले में थ्रेड का पूल उपलब्ध होना चाहिए। अगर यह समझ में आता है तो जवाब स्वीकार करें। =) – spieden