Mule请求程序模块不提取多个文件

Mule请求程序模块不提取多个文件,mule,mule-component,Mule,Mule Component,在mule流的中间部分,我使用mule请求程序模块来提取一些文件并将其放到不同的位置 <mulerequester:request resource="file://D:/CITI/PHACE2/IRM/processing/outbound/zip-in?connector=empty-conn" doc:name="Mule Requester"/> <file:outbound-endpoint path="${zip.file.out.path}"

在mule流的中间部分,我使用mule请求程序模块来提取一些文件并将其放到不同的位置

<mulerequester:request 
resource="file://D:/CITI/PHACE2/IRM/processing/outbound/zip-in?connector=empty-conn" 
     doc:name="Mule Requester"/>
<file:outbound-endpoint path="${zip.file.out.path}" 
     outputPattern="#[message.inboundProperties.originalFilename]" 
     responseTimeout="10000" doc:name="File" connector-ref="File"/>

我有3个文件在上面的文件夹。例如A.zip、B.zip和C.zip。 只有一个.zip正在拖放到目标文件夹


我还尝试在mulerequester
resource
中添加文件入站连接器名称,而不是文件路径。这也不起作用。

具有File类型资源的Mule请求程序不能正确使用collection选项。他们声称有一个脚注解决了这一问题,但它是否在说“不要这样做”并不明显或清楚

出现此问题的原因是资源获取的机制和时间。在这些资源的基本库中,有两种机制,根据请求资源的方式使用。在入站端点中,使用轮询机制,该机制以列表的形式返回与轮询匹配的所有文件,并将这些文件作为单独的查找线程化。在请求者使用的方法中,它是只返回一个文件的单个查询

collection选项将获得一个列表,这对于JMS队列之类的东西非常有用,但对于文件则不行。对于JMS队列,当您请求资源时,资源将从队列中删除,因此如果您请求5个或全部资源,则得到5个或全部资源。但是,对于文件,在中完成处理之前,文件不会从目录中删除,因此如果请求5,则会得到5个流到同一文件,因为每个流都返回找到的第一个流,并且尚未删除,因此下一个请求会再次找到它。如果你要求全部(-1),它只是进入一个无限循环,一遍又一遍地向你发送相同的流

这可能会被修复,但需要重新写入整个请求程序。解决方法是请求、处理、重复,直到找不到更多的文件,或者使用自定义代码来获取可用文件列表,然后按照您希望的顺序请求每个文件。这有两个选项。

尝试使用mule requester Ex中可用的“请求收集”操作: