2017-02-06 11 views
0

Apache Camelは、FTPや "file"のようなさまざまなプロトコルを非常にサポートしています。私はちょうど1つのファイルを読み込んでそれをちょっと変換するために使いたいと思います。Apache Camelを使用して1つのファイルを読み込むにはどうすればよいですか?

私は例のようにRouteBuilderとCamelContext.start()を使ってこれを行う方法を理解しましたが、無限ループでバックグラウンドデーモンを望んでいないし、複雑なルーティングも必要ない。

私は何かのような方法を行うことができます。「1 =リピートタイマー?」私は「アクション=ストップcontrolbusを?」を使用してルートを停止する方法についていくつかの答えを読んだりでした

String body = new DefaultCamelContext().justRunOnce(
    from("ftp://ftp.example.com/data/foo.txt") 
    .validate(body().regex("My Data.*")) 
    .getBody()); 

または似ていますが、まだそれらを新しいスレッドとしてCamelを起動し、いくつかのハックを使用して停止します。私は何とかそれを管理する複雑なソリューションを探しているのではなく、上の私の例のように、Camelがリーン10ライナーで使用できるかどうかを知りたいと思っています。

+0

の可能性のある重複した[入手方法Camel FTPをオンデマンドで一度だけ取得する](http://stackoverflow.com/questions/31819073/how-to-get-camel-ftp-to-fetch-only-once-on-demand) –

+1

確かに、より良い単一のファイルをダウンロードするためのエンタープライズ統合パターンフレームワークを使用するアプローチよりも非常に単純な処理を行います。 – Strelok

+0

Camel.createConsumerTemplate()を使用して、ConsumerTemplateを使用してファイルを一度ダウンロードしてください。 –

答えて

1

あなたはhttp://camel.apache.org/content-enricher.htmlを参照し、pollEnricht機能を使用することができます。

例、あなたはまた、代わりに、ファイルのエンドポイントのFTPエンドポイントを使用することができます。

<route> 
<from uri="direct:start"/> 
    <pollEnrich> 
    <constant>file:inbox?fileName=data.txt</constant> 
    </pollEnrich> 
<to uri="direct:result"/>