【发布时间】:2015-06-28 01:49:10
【问题描述】:
我想从 S3 存储桶下载 xml 文件,然后解组它们以将数据插入数据库:
...
from("aws-s3://myBucket?accessKey=xxx&secretKey=yyy")
.to("file:D:/output?fileName=${in.header.CamelAwsS3Key}")
.unmarshal(new JaxbDataFormat("com.xxx"))
...
当我不尝试解组时,我能够下载文件,但尝试解组时出现此错误:
org.apache.camel.TypeConversionException:
Error during type conversion from type:
com.amazonaws.services.s3.model.S3ObjectInputStream to the required type:
javax.xml.stream.XMLStreamReader with value com.amazonaws.services.s3.model.S3ObjectInputStream@67b8328b due javax.xml.stream.XMLStreamException:
java.io.IOException: Attempted read on closed stream.
由于我是 Camel 的新手,所以可能有些东西我还不明白......
- 当我对端点进行管道传输时,当前端点不是以前一个端点“修改”它的方式获取消息吗?在我的情况下,它看起来像是正在编组 S3 流,而不是从下载本地新创建的 xml 文件,因此出现错误。
我的理解是,如果我执行 .from().to().to(),第二个 .to() 不知道来自 .from() 的内容,所以如果我的第一个 .to() 创建一个 xml 文件,第二个 .to() 将消息作为 xml 文件处理。我错了吗? - 也许我需要创建 2 条路线?不过,我只需要 1 条路线,从数据库到文件再到 S3,我就能够做到这一点。
- 在这种情况下我需要编写自己的转换器吗?
谢谢!
【问题讨论】:
标签: apache-camel