骡子请求者模块不会拉多个文件

时间:2017-03-24 11:57:11

标签: mule mule-component

在骡子流的中间,我正在使用mule-requester模块来拉取一些文件并将其放到不同的位置

&a

我在上面的文件夹中有3个文件。例如A.zip,B.zip和C.zip。 只有A.zip正在下降到目标文件夹。

我还尝试在mulerequester <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"/> 中添加文件入站连接器名称而不是文件路径。这也行不通。

1 个答案:

答案 0 :(得分:0)

具有File类型资源的Mule Requester无法与集合选项一起正常工作。他们声称有一个脚注可以解决这个问题,但是并不清楚或明确表示不这样做。

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

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

这可能是固定的,但会重写整个请求者。解决方法是请求,处理,重复直到找不到更多文件,或者可能是自定义代码以获取可用文件列表,然后按照您希望的顺序按名称请求每个文件可能是几个选项。