アップストリームサービス(Azure Blobサービス)を呼び出して、データをOutputStreamにプッシュする必要があります。次に、それを反転させて、それをクライアントにプッシュする必要があります。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
され、データの書き込みが完了して初めて返されますか?