使用apache camel spring创建CSV文件

时间:2018-02-16 18:37:49

标签: apache-camel spring-camel

我正在尝试从驼峰弹簧创建csv文件,但收到错误。以下是我开发的代码 -

    <from uri="quartz2://myqyartz?cron=cronexpr"/>
    <to uri="bean:TestProcessor" />
    <marshal>
    <csv> 
    <header>orderId</header>
    <header>amount</header>
    <header>amount2</header>
    <header>amount3</header>
    <header>amount4</header>
    </csv>
    </marshal>
    <to uri="file:/home/user/Terminal?fileName=abc.csv"/>
    </route>

我也试过使用<convertBodyTo type="java.util.List"/>,但它给我的例外是

  

没有类型转换器可用于转换类型:   com.test.TestBean为所需类型:java.util.List with   值   com.test.TestBean@26cd85e5 [名称=测试,tumber = 500,batchId = 122,类型= XYZ,c_count = 25,计数= 14,金额= 555]

这里,TestBean是我的POJO,我从bean:TestProcessor返回TestBean对象的java.util.list。将camel自动链接对象的属性与标头或我是否需要为类型转换编写单独的处理器类,如果是,那么如何将java.util.list转换为所需的格式?

提前致谢。

1 个答案:

答案 0 :(得分:2)

你需要添加&#34;马歇尔&#34;走进你的路线。

<from uri="quartz2://myqyartz?cron=cronexpr"/>
  <transform>
    <simple>this will be file content</simple>
  </transform>
  <process ref="bodyToListProcessor"/>
  <marshal>
    <csv />
  </marshal>
<to uri="file:/home/user/?fileName=abc.csv"/>

<bean id="bodyToListProcessor" class="own.package.MyProcessor"/>

您可以在此处http://camel.apache.org/csv.html和此处找到更多信息:http://camel.apache.org/processor.html

修改

为了能够将您的POJO模型作为CSV条目插入,您可以使用&#34; camel-bindy&#34;。 使用此组件,您可以将CSV数据格式绑定到一个或多个POJO。

例如:

<dataFormats>
  <bindy id="bindyDataformat" type="Csv" classType="org.apache.camel.bindy.model.Order"/>
</dataFormats>

<route>
  <from uri="quartz2://myqyartz?cron=cronexpr" />
  <marshal ref="bindyDataformat" />
  <to uri="file:/home/user/?fileName=abc.csv" />
</route>

请查看以下链接以获取更多信息:http://camel.apache.org/bindy.html