Necesito llamar a un servicio ascendente (Azure Blob Service) para enviar datos a un OutputStream, que luego necesito dar vuelta y devolverlo al cliente, a través de akka. Sin akka (y solo el código de servlet), obtendría el ServletOutputStream y lo pasaría al método del servicio azul.
Lo más cerca que puedo tratar de tropezar, y claramente esto está mal, es algo como esto
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());
La idea es que estoy llamando a un servicio ascendente para obtener un flujo de salida poblado llamando a blobClient.download (os);
Parece que la función lambda se llama y regresa, pero luego falla, porque no hay datos o algo así. Como si no se supone que debo hacer que la función lambda haga el trabajo, pero ¿quizás devuelva algún objeto que haga el trabajo? No estoy seguro.
¿Cómo se hace esto?
download
? ¿Transmite datosos
y solo regresa una vez que los datos se escriben?