Можете ли вы выполнить загрузку и загрузку без копирования с помощью Spring 5 WebFlux, используя org.springframework.web.reactive.function.client.WebClient
?
Вы правы, нулевое копирование пока поддерживается при публикации данных на основе файлов Resource
.
Таким образом, следующее выглядит правильно:
client.post()
.body(BodyInserters.fromResource(new FileSystemResource(new File("file.txt"))));
Теперь для части чтения нулевое копирование не поддерживается на стороне чтения прямо сейчас в Spring Framework; для этого вы можете создать проблему улучшения на jira.spring.io.
Ваш пример кода должен выглядеть так:
Flux<DataBuffer> incoming = client.post()
.retrieve().bodyToFlux(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
К сожалению, чтение данных DataBuffer
не приведет к нулевому копированию, так как данные будут скопированы в память. Я не думаю, что нулевое копирование поддерживается прямо на стороне чтения, так что это может быть запрос на улучшение на https://jira.spring.io .
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения