J'ai besoin d'appeler un service en amont (Azure Blob Service) pour pousser les données vers un OutputStream, que je dois ensuite retourner et repousser vers le client, via akka. Sans akka (et juste du code de servlet), j'obtiendrais simplement le ServletOutputStream et le passerais à la méthode du service azure.
Le plus proche que je peux essayer de trébucher, et clairement c'est faux, c'est quelque chose comme ça
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());
L'idée est d'appeler un service en amont pour obtenir un flux de sortie rempli en appelant blobClient.download (os);
Il semble que la fonction lambda soit appelée et retourne, mais ensuite elle échoue, car il n'y a pas de données ou quelque chose. Comme si je ne suis pas censé avoir cette fonction lambda pour faire le travail, mais peut-être retourner un objet qui fait le travail? Pas certain.
Comment est-que quelqu'un peut faire ça?
download
? Transmet-il des donnéesos
et ne les renvoie- t-il qu'une fois que les données ont été écrites?