10

मैं सर्वलेट कंटेनर (या केवल एक HTTP सर्वर) के भीतर प्रतिक्रियाशील धाराओं का उपयोग करने के लिए उपयोग-मामलों की तलाश में हूं।Servlets में जावा 9 प्रवाह का उपयोग कर प्रतिक्रियाशील धाराओं के लिए उपयोग-मामलों?

Jetty project पूछा जा रहा है: "जेटी प्रतिक्रियाशील है?" और हम proposal ध्यान दिया जावा 9.

तो हम के लिए async सर्वलेट आईओ है, जो काफी दिलचस्प हैं प्रतिक्रियाशील धाराओं एपीआई का उपयोग कर के साथ some experiments शुरू कर दिया है करने के लिए प्रतिक्रियाशील धाराओं को जोड़ने के लिए ..... लेकिन किसी भी फोकस क्योंकि कमी हमारे पास वास्तविक उपयोग-मामलों की कमी है जो ध्यान केंद्रित करने के लिए हैं कि कौन सी चिंताएं सबसे महत्वपूर्ण हैं।

तो क्या किसी के पास कोई अच्छा उपयोग-मामला है जो वे साझा/व्याख्या कर सकते हैं ताकि हम अपनी जेटी प्रयोगों को उनकी आवश्यकताओं को पूरा करने के लिए निर्देशित कर सकें। जिस तरह की मैंने कल्पना की है, वह आरएस आधारित डेटाबेस प्रकाशक है जिस तरह से रूपांतरण के लिए Flow.Processors का उपयोग कर HTTP प्रतिक्रिया या वेबस्केट कनेक्शन पर ऑब्जेक्ट भेजना है।

उत्तर

5

एक व्यवहार्य उपयोग केस बहु-भाग फ़ॉर्म डेटा के पोस्टिंग का उपभोग करते समय, विशेष रूप से फ़ाइलों को अपलोड करते समय।

Typesafe ConductR प्रोजेक्ट (अस्वीकरण: मैं इसके लिए टेक लीड हूं), जब कोई उपयोगकर्ता बंडल लोड करता है तो बहु-भाग फ़ॉर्म डेटा प्राप्त करता है। हम akka-streams/http का उपयोग करते हैं।

हम स्ट्रीम के पहले दो हिस्सों को पढ़ते हैं क्योंकि हमारा प्रोटोकॉल निर्दिष्ट करता है कि हमें यह जानने के लिए कि कौन सा नोड बंडल लिखना है, उन्हें कुछ मेटा डेटा घोषित करना होगा। कुछ सत्यापन के बाद, हम उन्हें लिखने के लिए नोड निर्धारित करते हैं, और आंशिक रूप से खपत वाली धारा को जोड़ते हैं। इस प्रकार नोड जो बंडल वार्तालाप अपलोड करने का अनुरोध प्राप्त करता है, जो इसे नोड करता है, उसे पूरी धारा का उपभोग नहीं करने के दौरान इसे लिखने जा रहा है (जो 200 एमबी हो सकता है) और फिर इसे फिर से लिखना।

बहु-भाग फ़ॉर्म डेटा लिखना भी एक महान उपयोग-मामला है, यह देखते हुए कि आप डिस्क से फ़ाइल को स्रोत के रूप में स्ट्रीम कर सकते हैं और इसे कुछ http endpoint पर भेज सकते हैं यानी मैं ऊपर वर्णित क्लाइंट-साइड के क्लाइंट-साइड पर भेज सकता हूं।

उपयोग-मामलों दोनों के साथ लाभ यह है कि आप किसी नेटवर्क पर बाइट्स को स्थानांतरित करने के लिए आवश्यक स्मृति की मात्रा को कम करते हैं, और आप केवल फ़ाइल IO निष्पादित करते हैं जहां यह आवश्यक है।

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