Я работаю над обработкой большого файла с CSV-форматом, и я использовал split для разрыва CSV. Вот пример формата файла:Сплит и сборщик верблюдов
**Item1,Item2,Item3,Item4
Item1,Item5,Item7,Item2**
Вот мой маршрут информация:
<route>
<from uri="file://Data/groupedDocs?preMove=staging&delete=false" />
<split streaming="true" parallelProcessing="true">
<tokenize token="\n" group="1" />
<to uri="bean:groupProcessor" />
</split>
<log message="File Sent!!!"/>
</route>
В приведенном выше коде, мой groupProcessor
обрабатывает отдельные строки из файла CSV.
Проблема в том, как я могу узнать, были ли обработаны все записи? Может быть 10 или 100 записей. Я видел шаблон агрегатора, но проблема в том, что я не хочу собирать данные, то есть я не читаю все записи и не сбрасываю их в файл. Я создаю новый файл для каждой строки из файла CSV. Возможно также, что некоторые из строк в файле CSV могут генерировать ошибку, поэтому для записей с ошибками я не создаю никакого нового файла. Например. в CSV-файле у меня есть 10 строк, и из них 2 бросают какое-то исключение, поэтому мне придется записывать эти 2 как исключения и генерировать 8 файлов для остальной записи. В конце концов, мне также необходимо сохранить количество новых файлов, сгенерированных и ошибочных. Кто-нибудь может помочь здесь?
См. Этот ответ моей стратегии агрегации верблюдов http://stackoverflow.com/questions/26346772/camel-aggregation-strategy/26348903#26348903 – Namphibian