org.springframework.web.reactive.function.client.WebClient
を使用して、Spring 5 WebFluxでゼロコピーアップロードとダウンロードを実行できますか?WebClientでゼロコピーアップロードとダウンロードを実行するにはどうすればよいですか?
答えて
File-based Resource
からデータを投稿するときはゼロコピーがサポートされています。
ので、以下では右になります。
今読取部のために、ゼロコピーは春Frameworkで今読み出し側ではサポートされていませんclient.post()
.body(BodyInserters.fromResource(new FileSystemResource(new File("file.txt"))));
。そのためにjira.spring.ioの拡張問題を作成することができます。
あなたのコードサンプルは、次のようになります。データがメモリにコピーされるようDataBuffer
にデータの読み取りがゼロコピーを行うことはありません、残念ながら
Flux<DataBuffer> incoming = client.post()
.retrieve().bodyToMono(DataBuffer.class);
Mono<Void> writeOperation = DataBufferUtils.write(incoming, channel)
.map(DataBufferUtils::release)
.then();
// subscribe to the returned value, which will complete when writing is done
。私はゼロコピーが読書側で知っていることを知っているとは思わないので、これはhttps://jira.spring.ioの強化要求かもしれません。
応答全体をバッファリングしますか?バッファリングがブロックを引き起こさないか?応答をバッファリングする場合、 'DataBufferUtils.write(Publisher
応答全体がバッファリングされていません。反応パイプラインによって要求が要求されるたびに書き込まれます。 –
- 1. webclientを使用してC#でファイルをダウンロードするにはどうすればよいですか?
- 2. webclientを使用して別のフォームからダウンロードするにはどうすればよいですか?
- 3. WebClientでサイトにログインするにはどうすればよいですか?
- 4. WebClientを使ってhtmlをダウンロードするにはどうすればいいですか?
- 5. ゲームのダウンロードをダウンロードするにはどうすればよいですか?
- 6. スクリプトのダウンロードと実行を防ぐにはどうすればよいですか?
- 7. qでコールバックチェーンを実行するにはどうすればよいですか?
- 8. xPagesでカスタムコントロールログインフォームを実行するにはどうすればよいですか?
- 9. sharejsをnodejsで実行するにはどうすればよいですか?
- 10. RestheartでfindAndModifyを実行するにはどうすればよいですか?
- 11. JQueryでループを実行するにはどうすればよいですか?
- 12. カスタムエラーハンドラでシェルを実行するにはどうすればよいですか?
- 13. jshintをrhinoで実行するにはどうすればよいですか?
- 14. CloudimSDNで例を実行するにはどうすればよいですか?
- 15. バックグラウンドスレッドでレトロフィットを実行するにはどうすればよいですか?
- 16. iPythonをConsole2で実行するにはどうすればよいですか?
- 17. アンドロイドスタジオでhieroを実行するにはどうすればよいですか?
- 18. htmlでカウントダウンタイマーを実行するにはどうすればよいですか?
- 19. ElasticSearchでインデックスクエリを実行するにはどうすればよいですか?
- 20. Windowsでチェックサムを実行するにはどうすればよいですか?
- 21. コマンドヒストリサポートでインタープリタを実行するにはどうすればよいですか?
- 22. PHPでターミナルコマンドを実行するにはどうすればよいですか?
- 23. Delphiでコマンドラインプログラムを実行するにはどうすればよいですか?
- 24. Javaでタイマを実行するにはどうすればよいですか?
- 25. C#でコマンドを実行するにはどうすればよいですか?
- 26. Swiftでアレイスライスを実行するにはどうすればよいですか?
- 27. ユニットテストをアンドロイドモジュールで実行するにはどうすればよいですか?
- 28. DbFitでMERGEを実行するにはどうすればよいですか?
- 29. Herokuでgulpを実行するにはどうすればよいですか?
- 30. C#でSystem.Web.Script.Serializationを実行するにはどうすればよいですか?
'BodyInserters.fromResource'のドキュメンテーションに基づいて、以下のようにゼロコピーのアップロードを行います:' client.post()。body(BodyInserters.fromResource(new FileSystemResource(new file( "file.txt "))))'。それは正確ですか?ダウンロードはどうですか? – CoryO
クライアントコピーのダウンロードは、 'client.post()。exchange()。doOnNext(r - > DataBufferUtils.write(r.body(BodyExtractors.toDataBuffers())、channel、0).subscribe (DataBufferUtils.releaseConsumer())) 'を呼び出します。しかし、どのようにそれが消費され終わるまでブロックすることができますか?これはゼロコピーのダウンロードを実行するつもりですか? – CoryO