ฉันจำเป็นต้องเรียกใช้บริการอัปสตรีม (Azure Blob Service) เพื่อส่งข้อมูลไปยัง OutputStream ซึ่งฉันต้องเปิดและส่งกลับไปยังไคลเอนต์ถึง akka หากไม่มี akka (และเพียงรหัส servlet) ฉันจะได้รับ 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());
แนวคิดคือฉันกำลังเรียกใช้บริการ upstream เพื่อรับข้อมูลขาออกโดยการเรียก blobClient.download (os)
ดูเหมือนว่าฟังก์ชั่นแลมบ์ดาได้รับการโทรและส่งคืน แต่หลังจากนั้นมันก็ล้มเหลวเนื่องจากไม่มีข้อมูลหรืออะไรบางอย่าง ราวกับว่าฉันไม่ควรที่จะมีฟังก์ชั่นแลมบ์ดาทำงาน แต่อาจส่งคืนวัตถุบางอย่างที่ทำงานได้หรือไม่ ไม่แน่ใจ.
คนเราจะทำสิ่งนี้ได้อย่างไร
download
คืออะไร? มันสตรีมข้อมูลเข้าos
และกลับมาเมื่อเขียนข้อมูลเสร็จแล้วหรือไม่