मुझे आउटपुटस्ट्रीम पर डेटा पुश करने के लिए एक अपस्ट्रीम सेवा (एज़्योर ब्लॉब सर्विस) को कॉल करने की आवश्यकता होती है, जो तब मुझे इधर-उधर मुड़ने और इसे क्लाइंट पर वापस धकेलने की आवश्यकता होती है, एक्का के माध्यम से। एक्का (और सिर्फ सर्वलेट कोड) के बिना, मैं सिर्फ ServletOutputStream प्राप्त करूंगा और इसे azure सेवा के तरीके से पास करूंगा।
सबसे नज़दीकी मैं ठोकर खाने की कोशिश कर सकता हूं, और स्पष्ट रूप से यह गलत है, ऐसा कुछ है
Source<ByteString, OutputStream> source = StreamConverters.asOutputStream().mapMaterializedValue(os -> {
blobClient.download(os);
return os;
});
ResponseEntity resposeEntity = HttpEntities.create(ContentTypes.APPLICATION_OCTET_STREAM, preAuthData.getFileSize(), source);
sender().tell(new RequestResult(resposeEntity, StatusCodes.OK), self());
विचार यह है कि मैं एक अपस्ट्रीम सेवा को कॉल कर रहा हूं ताकि ब्लॉब्स्टिएंट.डाउट (ओएस) को कॉल करके आउटपुट आउटपुट प्राप्त किया जा सके;
ऐसा लगता है कि लैम्ब्डा फ़ंक्शन को कॉल किया जाता है और वापस लौटता है, लेकिन फिर बाद में यह विफल हो जाता है, क्योंकि कोई डेटा या कुछ नहीं है। जैसे कि मुझे लगता है कि लैम्बडा फंक्शन काम करने वाला नहीं है, लेकिन शायद कुछ ऑब्जेक्ट वापस करता है जो काम करता है? निश्चित नहीं।
कोई इसे कैसे करता है?
download
? क्या यह डेटा को स्ट्रीम करता हैos
और डेटा लिखे जाने के बाद ही वापस लौटता है?