动态Apache Camel输出路由

时间:2017-10-08 15:33:53

标签: apache-camel

您好我想使用apache Camel计算动态输出路由。我在文件夹位置收到一堆文件,根据其内容我想将文件移动到动态输出文件夹。将根据文件的输入内容构造ouput文件夹的名称。我如何实现它。

以下代码读取文件,处理它们,但我不知道如何根据文件内容设置$ {foldername}的值

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

请协助

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义处理器来构造foldername并插入标题。

$('button').click(function() {
    var value = this.value;
});

然后在您的路线中,您可以访问新创建的foldername-header:

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");
    }
}

答案 1 :(得分:0)

简短的回答是,您可以使用动态到端点toD 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}")