如何在camel DSL中设置CSV标头?

时间:2018-01-16 05:41:56

标签: apache-camel

我有一个没有标题的CSV文件,其中包含两个值,如

"lenovo","30000"

我想使用camel DSL在第一行设置标头并将其传递给另一条路线,标题如下:

"laptop","price"

我的DSL路线:

from("file:...?fileName=file1.csv&noop=true")
   //Something I want to include string like this
   .addLineInBody("laptop"+"price").append("\n")
   .to("file:../?fileName=output.csv");

我怎样才能在camel DSL中做到这一点?

1 个答案:

答案 0 :(得分:0)

我不完全理解你的标题问题。如果您只想在CSV文件前加上静态标题,请再次将其另存为CSV,您只需使用Java bean来预先添加消息正文。

如果您想将CSV转换为数据结构,反之亦然,请查看Camel CSV文档:http://camel.apache.org/csv.html

<强>更新 你可以像这样编写一个java bean。重要的部分是@Body Camel注释将消息体注入方法。有关详细信息,请参阅http://camel.apache.org/parameter-binding-annotations.html。 随心所欲地进行身体操控。

public class CsvHeaderEnricher {
    public String enrichCsvHeader(@Body String messageBody) {
        String enrichedBody = "YourHeader" + messageBody;
        return enrichedBody;
    }
}

然后你可以在你的路线中调用这样的bean:

from("file:...?fileName=file1.csv&noop=true")
    .bean(new CsvHeaderEnricher())
    .to("file:../?fileName=output.csv");
  • 您还可以在Spring上下文中注册bean,将其自动装入Route类并使用实例变量而不是new
  • 只要您的bean只包含一个方法,您就不需要告诉Camel使用哪种方法