Saya perlu memanggil layanan upstream (Azure Blob Service) untuk mendorong data ke OutputStream, yang kemudian saya perlu berbalik dan mendorongnya kembali ke klien, melalui akka. Tanpa akka (dan hanya kode servlet), saya hanya akan mendapatkan ServletOutputStream dan meneruskannya ke metode layanan azure.
Yang paling dekat yang bisa saya coba temukan, dan jelas ini salah, adalah sesuatu seperti ini
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());
Idenya adalah saya memanggil layanan upstream untuk mendapatkan outputstream yang dihuni dengan memanggil blobClient.download (os);
Sepertinya fungsi lambda dipanggil dan kembali, tetapi kemudian gagal, karena tidak ada data atau sesuatu. Seolah-olah saya tidak seharusnya memiliki fungsi lambda melakukan pekerjaan, tetapi mungkin mengembalikan beberapa objek yang berfungsi? Tidak yakin.
Bagaimana caranya?
download
? Apakah ini mengalirkan data keos
dan hanya mengembalikan setelah data selesai ditulis?