Мені потрібно зателефонувати до висхідної служби (Служба Azure Blob), щоб підштовхнути дані до OutputStream, і тоді мені потрібно обернутися і відштовхнути його до клієнта, через akka. Без akka (і просто сервлет-коду) я просто отримаю 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());
Ідея полягає в тому, що я закликаю службу вище, щоб отримати вихідний потік, зателефонувавши на blobClient.download (os);
Здається, лямбда-функція викликається і повертається, але потім вона виходить з ладу, тому що немає даних або чогось іншого. Наче я не маю, щоб ця лямбда-функція виконувала роботу, але, можливо, повертала якийсь предмет, який виконує роботу? Не впевнений.
Як це зробити?
download
? Чи передає вони даніos
та повертаються лише після того, як дані записані?