Как ограничить размер в весенней партии при использовании шага ItemWriter? - PullRequest
0 голосов
/ 08 января 2020

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

Теперь я должен записать это в файл xml, но здесь есть улов xml размер файла, который не может превышать 100 МБ, если его содержимое будет записано в другой файл.

Есть ли какой-нибудь способ, которым мы можем ограничить размер файла при настройке шага записи, или мне придется реализовать пользовательскую запись. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Ближайшее, что вы можете достать из коробки, это MultiResourceItemWriter. Этот элемент записи создаст несколько выходных файлов на основе номера элемента: всякий раз, когда количество записанных элементов превышает заданный предел, он создает новый файл. Поэтому, если вы можете оценить максимальное количество записываемых элементов, не превышая 100 МБ на файл, этот писатель может помочь.

В противном случае вам потребуется написать собственный многоресурсный модуль записи элементов на основе выходного файла. размер вместо номера позиции.

0 голосов
/ 08 января 2020

Я не верю, что есть способ сделать это, используя пружинную партию как есть.

Решение, которое вы должны реализовать, зависит от требования к файлу, максимальный размер которого составляет 100 МБ.

Требуется ли системная инфраструктура? или требование для системы приема файлов?

У вас есть 3 варианта:

  1. Как вы сказали, вы можете создать собственный модуль записи для разбиения файла, когда он достигает этого максимума размер. Это довольно неприятно, поскольку вам, по сути, придется написать совершенно новый писатель, который затем будет обслуживаться вами, и фактическая реализация тоже будет не очень приятной (придется записывать в файл, проверять размер, а затем, если он превышает 100 МБ). затем снова удалите из файла).

  2. Угадайте размер куска для размера файла. Это просто предположение, что 1 запись будет иметь размер 1 МБ (пример), поэтому в каждом файле может быть максимум 100 записей. Это довольно рискованное решение, поскольку оно не гарантирует, что размер файла составляет менее 100 МБ, но я считаю, что этого можно добиться с помощью стандартной пружинной партии.

  3. Создайте дополнительный шаг для разделения файла. файл после написания большого файла. Это мое предпочтительное решение. Дело в том, что вы создаете один большой «временный» файл со всем содержимым (скажем, 450 МБ). Затем у вас есть вторичный процесс (шаг), который разбивает этот файл на 5 отдельных файлов (4x100mb, 1x50mb). Все это может быть выполнено и в рамках весенней партии, и в рамках одной и той же партии, если требуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...