2016-06-16 12 views
0

リモートのLinuxサーバーディレクトリからローカルマシンディレクトリに約10000個のファイルをダウンロードするためにcamel ftpを実行しています。私は約2000のファイルをダウンロードし終わるとすぐにメモリエラーのヒープを取得しています。他のフォーラムスレッドに基づいて、maxMessagesPerPollを使用することが推奨されています。しかし、1000に設定すると、1000個のファイルしかダウンロードされずに停止します。私のコードは非常にシンプルで、ラクダのftp例メモリ不足ヒープサイズエラー - apache camel ftp

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

'delay = 5s'ではなく' delay = 5000'を試してください。 – Ralf

答えて

0

私はあなたがフォーラムからみんなと話を正しい軌道に下がり続けていると考えているから取られています。しかし、メッセージの一部が欠落/欠落しているように見えます。 Camel FTPは "ポーリングエンドポイント"です。これは、常にループ上のエンドポイントを呼び出すことを意味します。これはまったく設定するのが難しくありませんし、いくつかのファイルを取り出して少し待ってからもっと引き出すことができます。理想的には、これはディレクトリに置かれているファイルに追いつくことができるため、通常は10,000バッチのファイルを移動させることはありません。数秒ごとに数百回動くことができます。

ドキュメント:FTP DOCS FROM

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

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

重要:参照File2のそこにすべてのオプションも、このコンポーネントに適用されます。

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

情報FILE2のドキュメントから

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

これは単にあなたの代わりに、一度にすべての10Kを移動しようとするいくつかのファイルごとに数秒または数分を拾うことができます。また、このオプションを使用すると、たまにラクダルートを始めた場合を除いて、通常は10kのビルドはできません。

重要な注意2: FTP消費者はただ、これを覚えておくの同時実行

をサポートしていません。パフォーマンスを向上させるためにスレッドを追加するだけでは、たくさんのファイルを処理したい場合にコンポーネントを常に動かすことが重要です。理想的には、一日一回のバッチ負荷よりむしろそれらを常に消費することが望ましい。