2017-03-27 19 views
0

Apache Camelを使用してFTPファイルをダウンロードしています。Apache Camelダウンロードの進捗状況

ダウンロードの進行状況を確認する方法はありますか?ヘッダーは合計ファイルサイズを公開していますが、私はダウンロードバイトストリームにアクセスすることはできません。私がしたら、手動でバイトを集計し、それを合計で割ってパーセンテージを得ることができます。

答えて

4

デフォルトのファイルコンポーネントはこのレベルの詳細を公開していないので、キャメルではこれを行うことはできません。しかし、私はあなたが比較的簡単にしたいことをするために既存のFTPコンポーネントを拡張できると信じています。

私はあなたがFTPソースによって引き起こされるフローを持っていると仮定しています。 Apache Camel FTPコンポーネント(「File2」の一部)は、ファイルが完全にダウンロードされるとイベントを送出します。 FTPコンポーネントはApache Commons FTPクライアントを使用します(FtpOperations.javaを参照)。 Camelの独自のFTPコンポーネントを作成することから始めます。このコンポーネントはCamelエンドポイントに、このアプローチを使用して進行状況を定期的に通知する方法を追加しますdescribed elsewhere on StackOverflow。あなたの新しいコンポーネントは例えば、進行中の通知を送信するためにそれを教えてくれます追加のパラメータを取ることができる:

<from uri="ftp://remote.site/directory/*.csv?progressNotifications=seda:ftp-progress-messages"/> 

を独自のメッセージ・フォーマットを定義し、FtpOperationsや友人があなたのことをそのチャンネルに任意のイベントを発することができます興味があるかもしれない - 例えばダウンロード開始、特定の頻度/マイルストーンでの進行イベント、ダウンロード終了、ダウンロードエラーなど

全体的な "FTP"ソースコンポーネントは、FtpComponent.javaで定義されています。これは、指定されたFTPソース(場合によっては、宛先)のCamel URIに基づいて、他のすべての部分を編成する責任があります。

+0

ありがとう、それは非常に役に立ち、私に何かを与えてくれます。 –

関連する問題