Использование большого файла JSON с помощью Apache Camel

#file #apache-camel #jsonpath

#файл #апач-верблюд #путь к jsonpath

Вопрос:

Я пытаюсь использовать большой файл JSON с записями в виде массива JSON, используя apache camel. Я использую функцию split() с jsonpath(«$») для разделения записей, которая возвращает Map и отлично работает с небольшими файлами. Но для больших файлов он загружает все в память и вызывает outofmemoryerror.

Вот код. Есть какие-нибудь предложения, как обращаться с большими файлами?

 from("file://{{data.file.inbound}}?charset=utf-8amp;readLock=changedamp;move={{data.file.processed}}amp;moveFailed={{data.file.failed}}")
                .id("file-to-mongodb").split().jsonpath("$").streaming()
                .to("log:com.manoj.oneByone");
 

Комментарии:

1. Вы должны использовать потоки для загрузки файлов по частям

2. Я удивлен, что у вас проблемы с памятью, так как вы уже используете .streaming() in в своем маршруте. Я делаю то же самое для CSV-файлов, и это очень хорошо работает с большими файлами. Возможно ли, что jsonpath выражение принудительно выполняет полную загрузку файла?

3. Да, jsonpath загружает все записи в память в виде карты, и это вызывает все проблемы.