Как выполнить загрузку и загрузку без копирования с помощью WebClient?

CoryO:

Можете ли вы выполнить загрузку и загрузку без копирования с помощью 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] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Добавить параметр запроса в запрос WebClient

Как использовать WebClient для выполнения синхронного запроса?

WebClient неправильно пытается запустить веб-сервер

логика проверки сертификата для одного экземпляра WebClient

весна WebClient: повторная попытка с потерей мощности на конкретной ошибке

Сохранение фотографии сетевого диска с помощью webClient

Как правильно получить тело ответа от WebClient в случае ошибки?

Мокинг сообщения WebClient при наличии тела запроса

Совершайте одновременные вызовы WebClient и получайте только первые выполненные

WebClient не разрешается

Как правильно получить пользовательское сообщение об ошибке в WebClient?

WebClient не может быть найден

Последовательная загрузка WebClient приводит к нереалистичной скорости загрузки

Установить тайм-аут с помощью WebClient

Получить заголовки ответа от WebClient

Отправка файлов параллельно с WebClient

WebClient зависает до истечения времени ожидания

Повторите попытку WebClient на основе ответа

Повторите получение WebClient с новыми параметрами

Путь к файлу в WebClient

Как инициализировать WebClient с помощью инициализаторов объектов?

WebClient не читает ответ, пока не завершится запись запроса.

Использование WebClient для получения файлов интрасети

Почему я не могу повторно использовать WebClient для выполнения одного и того же запроса дважды?

Инструментарий WebClient в весеннем сыщике

Строка загрузки WebClient (страница с несколькими символами) настолько медленная

Файл загрузки WebClient отображает неправильный процент

WebClient и несколько сетевых адаптеров

Есть ли отрицательные стороны обертывания всего кода внутри с помощью Webclient?

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Резервное копирование / восстановление kafka и zookeeper

  3. 3

    Редактировать существующий файл Excel C # npoi

  4. 4

    Ipython использует% store magic для получения динамического имени

  5. 5

    Как получить список индексов всех значений NaN в массиве numpy?

  6. 6

    Почему бы не выдать ошибку ERROR в тесте Jasmine?

  7. 7

    Дженерики и потоки Java

  8. 8

    Как отфильтровать несколько столбцов в Qtableview?

  9. 9

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  10. 10

    Как изменить значок приложения для проекта libgdx android

  11. 11

    Thymeleaf не отображает значения в проекте Spring Boot

  12. 12

    Unity Проверить, включен ли Toggle

  13. 13

    Airflow не распознает мои настройки подключения S3

  14. 14

    Flutter: Unhandled Exception: FileSystemException: Creation failed, path = 'Directory: '' (OS Error: Read-only file system, errno = 30)

  15. 15

    Bogue étrange datetime.utcnow()

  16. 16

    На графике Matplotlib не отображается легенда

  17. 17

    Создание X509Certificate2 из ECC X509Certificate выдает исключение System.NotSupportedException в C #

  18. 18

    Как добавить фреймворк в файл в папке «Источники» Xcode Playground?

  19. 19

    Выполнение команд PowerShell в программе Java

  20. 20

    Статус HTTP 403 - ожидаемый токен CSRF не найден

  21. 21

    Инструмент для вставки данных, собранных в электронной таблице, в документ Word или PDF

популярныйтег

файл