Apache骆驼中的类型转换

时间:2018-09-18 14:41:03

标签: java apache spring-boot apache-camel integration

我对Apache Camel还是很陌生,目前正在做一个测试项目。当前,我正在尝试使用文件组件将自定义类中一些以前处理过的对象写入文件中(我不知道更好的选择)。

from("direct:processedDecimals")
            .to("file:data/output")

但是我有以下问题

   Caused by: org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: Add{x=5.63, y=78.016} of type: org.example.math.Add on: Message[ID-NTB828-1537281187742-0-10]. Caused by: No type converter available to convert from type: org.example.math.Add to the required type: java.io.InputStream with value Add{x=5.63, y=78.016}. Exchange[ID-NTB828-1537281187742-0-9]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: org.example.math.Add to the required type: java.io.InputStream with value Add{x=5.63, y=78.016}]

我在互联网上看到有人建议编写自定义TypeConverter,然后将其注册到WEB-INF文件夹中的文件中。但是我正在使用SpringBoot及其内部的Tomcat,但没有此目录。

1 个答案:

答案 0 :(得分:1)

您可以使用 convertBodyTo(String.class)将主体转换为String,它将在对象上使用 toString 方法进行转换:

from("direct:processedDecimals")
    .convertBodyTo(String.class)
    .to("file:data/output");

这应该在文件中写入“ Add {x = 5.63,y = 78.016}”。