在Mule ESB流程中,为什么File to Byte Array节点的输出"未知"

时间:2015-04-23 13:43:32

标签: mule

我正在尝试创建一个工作流来监视传入文件的文件夹。当文件进来时,我想转换为字节数组以进一步处理下游。

当我没有变换器时,File节点的输出将Payload显示为InputStream。

然后我向File节点添加了一个文件:file-to-byte-array-transformer,但输出Payload仍显示为InputStream。它现在不应该显示为字节数组吗?

然后我从文件节点中删除了变换器并添加了一个"文件到字​​节数组"节点而不是。

现在,File to Byte Array节点的输出Payload显示为" Unknown"。

File to Byte Array节点的输出是否为已知类型?即一个"字节数组"?为什么它显示为" Uknown"?

当我试图使用数据映射器时,这当然会导致下游问题,然后数据映射器不知道传入类型,因此无法正确映射。

1 个答案:

答案 0 :(得分:0)

理解变换器的关键技巧之一是要意识到它们通常会更改出站Content-Type并且可能更改有效负载。也就是说,变形金刚可以简单地改变Mule对有效载荷的理解方式,而不必实际改变有效载荷内容。

此外,Mule似乎试图在读取入站消息有效负载时“懒惰”(大概是为了避免一次将大量内容加载到内存中),这就是为什么它将InputStream置于有效负载中入站消息。

在您的情况下,我怀疑file:file-to-byte-array-transformer正在从InputStream更改期望阅读的内容类型,但将InputStream保留为有效载荷。正如David Dossot在他对你的问题的评论中建议的那样,你可能会对object-to-byte-array变换器有更好的运气。