Ошибка размера кучи нехватки памяти - apache camel ftp

Я запускаю свой верблюжий ftp, чтобы загрузить около 10000 файлов из каталога удаленного сервера Linux в каталог локального компьютера. Я получаю кучу ошибок памяти, как только он завершает загрузку около 2000 файлов. Исходя из других тем форума, было предложено использовать maxMessagesPerPoll. Но если я установлю его на 1000, он загружает только 1000 файлов и останавливается. Мой код довольно прост и взят из примера с верблюдом

from("sftp://xxxxx:22//tmp/serverfolder/?stepwise=false&include=ABC*.txt}}&username=XXXX&password=XXXXX&maximumReconnectAttempts=0&delay=5s&maxMessagesPerPoll=1000")
.to(/tmp/localfolder/);

1 ответ

Я считаю, что вы идете по правильному пути, разговаривая с парнями с форумов. Тем не менее, похоже, что часть их сообщения была пропущена / пропущена. Camel FTP является "конечной точкой опроса", это означает, что он будет постоянно вызывать конечную точку в цикле. Это совсем не сложно настроить, и это даст вам возможность вытащить несколько файлов, немного подождать, а затем вытащить больше. В идеале это позволит вам не отставать от файлов, помещаемых в каталог, чтобы вы обычно не получали 10000 пакетов файлов для перемещения. Вы можете двигаться несколько сотен каждые пару секунд.

Документация:

http://camel.apache.org/polling-consumer.html

http://camel.apache.org/ftp.html

ВАЖНОЕ ПРИМЕЧАНИЕ ОТ FTP DOCS: Смотрите File2, так как все опции там также применимы для этого компонента.

http://camel.apache.org/file2.html

Информация из файла2 документации

Property    Default    Description
delay       500        Milliseconds before the next poll of the file/directory.

Это просто означает, что вы можете выбрать несколько файлов каждые пару секунд или минут, вместо того, чтобы пытаться переместить все 10 Кб за раз. Также помните, что при использовании этой опции вы, как правило, никогда не наберете 10кб, если только не начнете свой верблюжий маршрут время от времени.

ВАЖНОЕ ПРИМЕЧАНИЕ 2: приемник FTP не поддерживает параллелизм

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

Другие вопросы по тегам