Как обслуживать огромное количество данных в виде файла в Java Spring MVC при его создании? - PullRequest
0 голосов
/ 02 июня 2018

На моих производственных серверах в каждом блоке сотни пользователей, и я понял, что экспорт данных может привести к разрушению памяти и разрушению приложения для нескольких пользователей.

Речь идет о миллионах данных, экспортируемых одним пользователем.

Есть ли способ создать файл CSV и передать его во внешний интерфейс, поскольку он создается для использования как можно меньшего объема памяти?

Создание пакетов запросов внешнего интерфейса и создание файла CSV в внешнем интерфейсе не вариант, этот вызов будет использоваться для других платформ, и я пытаюсь сделать его максимально чистым для всех.

1 Ответ

0 голосов
/ 02 июня 2018

Если вы посмотрите на Spring Framework Documentation на Spring Web MVC , раздел 1.4.3. Методы обработки , подраздел Возвращаемые значения , вы найдете множество способов возврата потоковых данных, например

  • void - Метод с типом возврата void (или null возвращаемым значением) считается полностью обработанным ответом, если он также имеет ServletResponse или OutputStream аргумент или аннотация @ResponseStatus.

  • ResponseBodyEmitter - генерирует поток объектов асинхронно для записи в ответ с HttpMessageConverter 's;также поддерживается как тело ResponseEntity.См. Асинхронные запросы и Потоковая передача HTTP .

Это означает, что вы можете сделать это:

  • Синхронный: запись необработанного ответа самостоятельно в поток ответов HTTP в методе обработчика.Ответ завершается, когда возвращается метод.

  • Асинхронный: подготовьте потоковую передачу (включая заголовки HTTP) в вашем методе-обработчике, затем выполните фактическую потоковую передачу в другом потоке.

...