मैं इस सवाल पूछ रहे हैं, के बाद से मेरी गहराई से बाहर नहीं बल्कि महसूस धाराओं official docs पढ़ने के बावजूद और संसाधनों इन सवालों में जुड़े हुए:प्ले फ्रेमवर्क 2.0 BodyParser - XML पार्स धक्का
How to understand `Iteratee` in play2?
Can't understand Iteratee, Enumerator, Enumeratee in Play 2.0
... मैं अभी भी सामान्य रूप से iteratees, enumerators, और Play 2.0 के प्रतिक्रियाशील मॉडल के बारे में बहुत आलसी हूं। लेकिन वैसे भी, मैं एक वेब सेवा स्थापित करना चाहता हूं जो मुझे बड़ी एक्सएमएल (> 100 एमबी) फाइलें अपलोड करने की अनुमति देता है, कुछ विशिष्ट (गैर-इंटरलीव किए गए) नोडसेक्स को चुनें, उन्हें संसाधित करें, और परिणामों को क्लाइंट को वापस स्ट्रीम करें।
मुझे लगता है कि मुझे सबसे पहले जो करना है वह एक बॉडी पार्सर लिखता है जो बाइट्स के टुकड़े लेता है, उन्हें एक एक्सएमएल पार्सर में खिलाता है, और नोडसेक्स की एक धारा को उत्सर्जित करता है, जो आलसी तरीके से <doc>...</doc>
कहता है।
क्या कोई भी मार्गदर्शन और/या उदाहरण प्रदान कर सकता है कि यह कैसे पूरा किया जा सकता है?
अद्यतन: अधिक पृष्ठभूमि: -
मेरे एक्सएमएल वास्तव में, एक Solr add
दस्तावेज है तो ऐसा लगता है कि:
<add>
<doc>
<field name="name">Some Entity</field>
<field name="details">Blah blah...</field>
...
</doc>
...
</add>
मैं एक स्ट्रीमिंग तरीके से एक <doc>
कार्रवाई करने के लिए चाहते हैं, तो मेरे पार्सर होगा स्पष्ट रूप से तब तक इंतजार करना पड़ेगा जब तक कि यह <doc>
प्रारंभ ईवेंट को हिट न करे, समकक्ष </doc>
अंत ईवेंट तक सबकुछ बफर करें, और पूर्ण तत्व के नोडसेक को छोड़ दें, और फिर उसके बफर को फ्लश करें।
यह Play BodyParser के साथ कैसे काम करेगा, मुझे पूरी तरह से यकीन नहीं है। अधिक अपडेट अगर मैं और स्पष्ट कर सकता हूं कि मैं क्या करना चाहता हूं!
हालांकि संपूर्ण एक्सएमएल फ़ाइल बड़ी है, प्रत्येक <doc />
तत्व स्वयं ही छोटा है, हालांकि मुझे स्पष्ट रूप से यह जांचना होगा कि बाइट बफर एक निश्चित आकार से अधिक नहीं था।
आप ठीक से अपने NodeSeqs rechunk की जरूरत के लिए एक समाधान का वर्णन करता है, उनके बीच कोई विभाजक है? आप कैसे जानते हैं कि एक नोडसेक पूरा हो गया है? – Sadache
हाय @ सादाचे - मैंने इस संबंध में मेरे प्रश्न को स्पष्ट रूप से स्पष्ट किया है, एक नज़र रखने के लिए धन्यवाद। – Mikesname
हाय, क्या आपको अंततः समाधान मिला? – Loic