如何将动态分隔符传递给驼峰中的csv编组?

时间:2015-07-07 06:47:49

标签: apache-camel

我想将动态分隔符传递给csv编组,如下所示。

<marshal>
    <csv delimiter="${header.FIELD_DELIMITER}"/>
</marshal>

当我尝试如上所述时,我得到了这个例外:

Caused by: java.lang.IllegalArgumentException: Delimiter must have a length of one!
    at org.apache.camel.model.dataformat.CsvDataFormat.configureDataFormat(CsvDataFormat.java:138)
    at org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:88)
    at org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:80)
    at org.apache.camel.model.MarshalDefinition.createProcessor(MarshalDefinition.java:158)
    at org.apache.camel.model.ProcessorDefinition.createProcessor(ProcessorDefinition.java:460)
    at org.apache.camel.model.ProcessorDefinition.createOutputsProcessor(ProcessorDefinition.java:429)
    at org.apache.camel.model.TryDefinition.createProcessor(TryDefinition.java:73)
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:500)t
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:213)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:909)
    ... 19 more

2 个答案:

答案 0 :(得分:1)

而不是这样做

<marshal>
    <csv delimiter="${header.FIELD_DELIMITER}"/>
</marshal>

你需要这样做:

<toD uri="dataformat:csv:marshal?delimiter=${header.FIELD_DELIMITER}"/>

这是动态路由,只要您想根据运行时值在运行时创建URI,就需要使用它。

答案 1 :(得分:0)

你不能用元帅那样做。但是,您可以使用dataformat端点和动态模式。有关详细信息,请访问: