Я разрабатываю приложение Spring Batch, которое записывает строки базы данных в файлы CSV.База данных огромна, поэтому мне нужно сгенерировать несколько выходных CSV-файлов, разбитых на части (outputfile.csv.1, outputfile.csv.2, outputfile.csv.3 .....)
Я проверяю все данныеслучаи, и я обнаружил проблему, когда я перезапустить неудавшуюся работу в этой ситуации.Когда в первом фрагменте нового многораздельного файла произошел сбой, этот новый файл не создается (я пробовал shouldDeleteIfEmpty = false, но файл не создается).
При попытке перезагрузки кажется, чтоожидание этого последнего отсутствующего многораздельного файла с ошибкой.
Пример:
ChunkSize = 50
ItemCountLimitPerResource = 100
Force Exception в элементе 325
----------------
Выполнение не выполненоЯ могу видеть в выходных данных сгенерированные файлы (outputfile.csv.1, outputfile.csv.2, outputfile.csv.3) с 300 первыми строками (6 блоков и 3 завершенных файла).
КогдаЯ перезапускаю задание, получаю исключение:
org.springframework.batch.item.ItemStreamException: файл недоступен для записи: [XXXX ... \ outputfile * .csv.4 *]
Похоже, что ожидает этот файл ( .csv.4 ), но он не был создан из-за ошибки в первом чанке (я пробовал mustDeleteIfEmpty = false, но файл не создан)
Просмотр хранилища базы данных Я могу проверить выполнение, и значение индекса ресурса равно 4
{"map": [{" entry ": [
{" string ":" FlatFileItemWriter.current.count "," long ": 700}, {" string ":" JdbcCursorItemReader.read.count "," int": 300}, *
{" string ":" MultiResourceItemWriter.resource.index "," int ": 4}, *
{" string ":" FlatFileItemWriter.written ","long": 50}, {"string": ["batch.taskletType", "org.springframework.batch.core.step.item.ChunkOrientedTasklet"]}, {"string": "MultiResourceItemWriter.resource.item.count"," int ": 0}, {" string ": [" batch.stepType "," org.springframework.batch.core.step.tasklet.TaskletStep "]}]}]}
Я пыталсянастройка флагов FlatFileItemWriter с различными значениями (AppendAllowed, ShouldDeleteIfEmpty, ShouldDeleteIfExists), но возникает та же проблема
Спасибо!