Многопоточная работа Spring Batch с фиксированным порядком - PullRequest
2 голосов
/ 19 августа 2011

Я создал весеннее пакетное задание, которое считывает фрагменты (уровень фиксации = 10) плоского файла CSV и записывает вывод в другой плоский файл.Легко и просто.Чтобы протестировать локальное масштабирование, я также настроил тасклет с помощью TaskExecutor с пулом из 10 потоков, что обеспечило параллелизм с использованием многопоточного пошагового шаблона.Как и ожидалось, эти потоки одновременно читают элементы, пока их чанк не будет заполнен и чанк не будет записан в выходной файл.Также, как и ожидалось, порядок элементов изменился из-за этого одновременного чтения.Но возможно ли поддерживать фиксированный порядок, предпочтительно используя при этом повышенную производительность, полученную при использовании нескольких потоков?

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Я не могу придумать легкий путь. Обходным путем будет префикс всех строк с идентификатором, который создается последовательно во время чтения. После окончания работы отсортируйте строки по идентификатору. Звучит неприлично, но должно работать.

0 голосов
/ 19 августа 2011

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

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