我正在尝试创建一个工作流来监视传入文件的文件夹。当文件进来时,我想转换为字节数组以进一步处理下游。
当我没有变换器时,File节点的输出将Payload显示为InputStream。
然后我向File节点添加了一个文件:file-to-byte-array-transformer,但输出Payload仍显示为InputStream。它现在不应该显示为字节数组吗?
然后我从文件节点中删除了变换器并添加了一个"文件到字节数组"节点而不是。
现在,File to Byte Array节点的输出Payload显示为" Unknown"。
File to Byte Array节点的输出是否为已知类型?即一个"字节数组"?为什么它显示为" Uknown"?
当我试图使用数据映射器时,这当然会导致下游问题,然后数据映射器不知道传入类型,因此无法正确映射。
答案 0 :(得分:0)
理解变换器的关键技巧之一是要意识到它们通常会更改出站Content-Type
并且可能更改有效负载。也就是说,变形金刚可以简单地改变Mule对有效载荷的理解方式,而不必实际改变有效载荷内容。
此外,Mule似乎试图在读取入站消息有效负载时“懒惰”(大概是为了避免一次将大量内容加载到内存中),这就是为什么它将InputStream
置于有效负载中入站消息。
在您的情况下,我怀疑file:file-to-byte-array-transformer
正在从InputStream
更改期望阅读的内容类型,但将InputStream
保留为有效载荷。正如David Dossot在他对你的问题的评论中建议的那样,你可能会对object-to-byte-array
变换器有更好的运气。