Preciso ligar para um serviço upstream (Serviço de Blob do Azure) para enviar dados para um OutputStream, que então eu preciso dar a volta e enviá-los de volta ao cliente, através de akka. Sem akka (e apenas o código do servlet), eu apenas pegava o ServletOutputStream e o passava para o método do serviço azure.
O mais próximo que eu posso tentar tropeçar, e claramente isso está errado, é algo como isto
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());
A idéia é que eu estou chamando um serviço upstream para obter um fluxo de saída preenchido chamando blobClient.download (os);
Parece que a função lambda é chamada e retornada, mas depois falha, porque não há dados ou algo assim. Como se eu não devesse ter essa função lambda fazendo o trabalho, mas talvez retorne algum objeto que faça o trabalho? Não tenho certeza.
Como se faz isso?
download
? Ele transmite dadosos
e retorna apenas quando os dados são gravados?