1

我正在尝试从骆驼弹簧创建 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,值为 com.test.TestBean@26cd85e5[name=test,tumber=500,batchId=122,Type=XYZ, c_count=25,Count=14,金额=555]

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

提前致谢。

4

1 回答 1

2

您需要在您的路线中添加一个“marshall”步骤。

<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 条目插入,您可以使用“camel-bindy”。使用此组件,您可以将 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

于 2018-02-16T21:33:27.487 回答