2017-10-08 15 views
0

こんにちは、私はapache Camelを使用して動的な出力ルートを計算したいと思います。私はその内容に基づいてフォルダの場所にファイルの束を受け取ります、私は動的出力フォルダにファイルを移動したい。 ouputフォルダーの名前は、ファイルの入力内容に基づいて作成されます。どのように私はそれを達成するのですか?動的Apache Camel出力ルート

次のコードは、ファイルを読み取る、それらを処理し、しかし、私は、ファイル

from("file:D:\\camel\\input\\one?recursive=true&delete=true") 
      .process(new LogProcessor()) 
      .to("file:D:\\camel\\output\\${foldername}") 

の内容に基づいて$ {フォルダ名}の値を設定する方法がわからない

答えて

2
を支援してください

カスタムプロセッサを作成してフォルダ名を作成し、ヘッダーに挿入することができます。

.to("file:D:\\camel\\output\\${header.foldername}"); 
+0

や '$ {my.getFolderName}' – Namphibian

+0

はあなたに感謝のような文字列を返すPOJOメソッドを持っています。それは働いた – onlinejava

+0

おっと申し訳ありませんが、あなたが提供するコードは動作しません、私はrecipientList(ヘッダー( "foldername"))、コマンドの代わりに使用する必要があります – onlinejava

0

短い答えは、あなたがtoDをエンドポイントするために、動的に使用することができます。

public class DirectoryNameProcessor implements Processor { 
    @Override 
    public void process(Exchange exchange) { 
     Message in = exchange.getIn(); 
     // Get the contents of the processed file 
     String body = in.getBody(String.class); 
     //Get the original file name 
     String fileName = in.getHeader("CamelFileName", String.class); 
     // Perform your logic 
     in.setHeader("foldername"); 
    } 
} 

は、その後、あなたのルートに新しく作成したフォルダ名、ヘッダにアクセスすることができます。
http://camel.apache.org/message-endpoint.html#MessageEndpoint-DynamicTo

それは次のようになります。

from("file:D:\\camel\\input\\one?recursive=true&delete=true") 
     .process(new LogProcessor()) 
     .toD("file:D:\\camel\\output\\${foldername}") 
関連する問題