在Mule ESB流中,为什么文件到字节数组节点的输出是;“未知”;

在Mule ESB流中,为什么文件到字节数组节点的输出是;“未知”;,mule,Mule,我正在尝试创建一个工作流来监视文件夹中的传入文件。当一个文件进入时,我想转换成一个字节数组,以便在下游进行进一步处理 当我没有转换器时,文件节点的输出将负载显示为InputStream 然后,我向文件节点添加了一个file:file-to-byte数组转换器,但输出负载仍然显示为InputStream。它现在不应该显示为字节数组吗 然后,我从文件节点删除了转换器,并添加了一个“文件到字节数组”节点 现在,文件到字节数组节点的输出负载显示为“未知” 文件到字节数组节点的输出不是已知类型吗?即“字节

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

当我没有转换器时,文件节点的输出将负载显示为InputStream

然后,我向文件节点添加了一个file:file-to-byte数组转换器,但输出负载仍然显示为InputStream。它现在不应该显示为字节数组吗

然后,我从文件节点删除了转换器,并添加了一个“文件到字节数组”节点

现在,文件到字节数组节点的输出负载显示为“未知”

文件到字节数组节点的输出不是已知类型吗?即“字节数组”?为什么它显示为“Uknown”


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

理解转换器的关键技巧之一是认识到它们通常会更改出站
内容类型,并且可能会更改负载。也就是说,转换器可以简单地改变Mule理解有效负载的方式,而不必实际更改有效负载内容

此外,Mule在读取入站消息负载时似乎“懒惰”(可能是为了避免将大量内容一次加载到内存中),这就是为什么它将
InputStream
放入入站消息负载的原因


在您的情况下,我怀疑
file:file-to-byte数组转换器
正在更改它希望从
InputStream
读取的内容类型,但将
InputStream
保留为有效负载。正如David Dossot在对您的问题的评论中所建议的,您可能会更幸运地使用
对象到字节数组
转换器。

您是否尝试过简单的
对象到字节数组
转换器?是的,我尝试过,但结果相同,输出是“未知的:未知的”等等,“输出有效负载”不是“未知的”,这是它检测到的类型,对吗?这是从对象到字节数组节点的输出负载,是“未知的”。哇,这太奇怪了。请显示您的XML配置。我尝试了对象到字节数组,结果相同,节点的输出负载类型为“未知:未知”。我同意Mule在读取有效负载方面应该是懒惰的,并推迟到需要的时候,但是设计模式中的类型应该是明确的。“文件到字节数组”或“对象到字节数组”节点的输出类型应为“字节数组”。这导致的问题是,我随后添加了一个DataMapper节点,该节点无法识别输入。我可以手动设置输入,并且我尝试将“Pojo”与Byte或Collection->Byte一起使用,但是我无法将数组传递到下一个节点。下一个节点是Web服务客户机,该方法将字节数组(base64编码)作为参数。尝试所有这些组合,我可以通过获得对web服务的调用,但是web服务接收一个长度为零的字节数组。