我想将动态分隔符传递给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
答案 0 :(得分:1)
而不是这样做
<marshal>
<csv delimiter="${header.FIELD_DELIMITER}"/>
</marshal>
你需要这样做:
<toD uri="dataformat:csv:marshal?delimiter=${header.FIELD_DELIMITER}"/>
这是动态路由,只要您想根据运行时值在运行时创建URI,就需要使用它。
答案 1 :(得分:0)
你不能用元帅那样做。但是,您可以使用dataformat端点和动态模式。有关详细信息,请访问: