Tôi cần gọi một dịch vụ ngược dòng (Dịch vụ Azure Blob) để đẩy dữ liệu lên OutputStream, sau đó tôi cần quay lại và đẩy nó trở lại máy khách, thông qua akka. Nếu không có akka (và chỉ có mã servlet), tôi sẽ lấy ServletOutputStream và chuyển nó sang phương thức của dịch vụ azure.
Lần gần nhất tôi có thể cố gắng vấp ngã, và rõ ràng điều này là sai, là một cái gì đó như thế này
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());
Ý tưởng là tôi đang gọi một dịch vụ ngược dòng để có được một luồng đầu ra được điền bằng cách gọi blobClient.doad (os);
Có vẻ như hàm lambda được gọi và trả về, nhưng sau đó nó không thành công, vì không có dữ liệu hoặc thứ gì đó. Như thể tôi không được phép có chức năng lambda đó làm việc, nhưng có lẽ trả lại một số đối tượng thực hiện công việc? Không chắc.
Làm thế nào để làm điều này?
download
gì? Nó có truyền dữ liệu vàoos
và chỉ trả về khi dữ liệu được ghi xong không?