2

次のキャメル ルートを定義しました。

    RouteBuilder rb = new RouteBuilder() {
        @Override
        public void configure() throws Exception {
            from("sftp://myhost//path/to/files/")
            .to("log:loggingCategory?level=INFO")
            .to("file:///tmp/");
        }
    };

このルートでコンテキストを開始すると、ラクダが接続してファイルをダウンロードします。私の問題は、コンテキストがシャットダウンされるまでキャメルが同じファイルのダウンロードを繰り返すことです。FTP2 コンポーネントがこれを行うのはなぜですか? どうすれば停止できますか?

maven 経由でバージョン 2.10.4 の camel-core と camel-ftp を含めました。

4

2 に答える 2

3

べき等消費者がそのトリックを行います。FTP2コンポーネントのドキュメントでは、File2コンポーネントを「そこにあるすべてのオプションがこのコンポーネントにも適用されるため」と呼んでいます。LRUCacheの使用をアクティブにするパラメータ「indempotent=true 」があります。

Idempotent Consumer EIPパターンを使用して、Camelがすでに処理されたファイルをスキップできるようにするオプション。デフォルトでは、1000エントリを保持するメモリベースのLRUCacheを使用します。noop = trueの場合、同じファイルを何度も消費しないようにべき等も有効になります。

私の完全なソース定義は次のようになります。

from("sftp://myhost//path/to/files/?username=user&password=secret&idempotent=true")
于 2013-03-09T08:36:25.757 に答える
1

キャメルftp2のドキュメントから:

FTPコンシューマーは、デフォルトで、リモートFTPサーバー上で消費されたファイルをそのままにします。ファイルを削除したり、別の場所に移動したりする場合は、明示的に構成する必要があります。たとえば、delete = trueを使用してファイルを削除したり、move=.doneを使用してファイルを非表示のdoneサブディレクトリに移動したりできます。

ファイルを削除するには、ルートを次のように変更します

from("sftp://myhost//path/to/files?delete=true")

接続しているユーザーに必要な権限があることを確認してください。

于 2013-03-09T03:44:46.260 に答える