当我尝试在MuleRequester的帮助下移动两个文件(比如File1.txt和File.txt)。 MuleRequester正在挑选File1两次。而不是它应该先选择File1然后选择File2。有人可以帮我提供解决方案吗? 我使用3.8.0运行时。已附上流量快照供您参考
注意:Http请求者仅用于执行用户驱动。
答案 0 :(得分:0)
每当使用File / SFTP / FTP组件时,应该更加小心轮询和FileAge(如果长尺寸需要)。根据您的有效负载大小,我们需要增加轮询频率。如果文件大小很大且轮询频率较低,它可能会多次读取,最终导致问题。
还要确保在读取文件后删除文件。
以下配置工作正常。
<file:connector name="FileCon" autoDelete="true" streaming="false" validateConnections="true" doc:name="File" fileAge="50" pollingFrequency="2000"/>
<flow name="removeFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<set-payload value="#['test']" doc:name="Set Payload"/>
<async doc:name="Async">
<logger level="INFO" doc:name="Logger"/>
<mulerequester:request-collection config-ref="Mule_Requester" resource="file://c:/in?connector=FileCon" timeout="30000" count="2" doc:name="Mule Requester" throwExceptionOnTimeout="true" />
<logger level="INFO" doc:name="Logger"/>
<foreach doc:name="For Each">
<file:outbound-endpoint path="c:/out" outputPattern="#[server.nanoTime()]#[function:uuid].txt" responseTimeout="10000" doc:name="File"/>
</foreach>
</async>
</flow>
答案 1 :(得分:0)
请求者不会自行循环访问SFTP路径中的文件。如果您没有从第二次访问的路径中删除第一个文件,它将再次获得相同的文件。此外,如果您尝试获取文件集合,它将一遍又一遍地获取相同的文件。第二点,IMO是请求者的一个缺陷,应该予以纠正。在任何情况下,结果是您无法使用请求者访问目录中的第二个文件而不使用第一个文件将其从路径中删除,或者使用通配符或正则表达式过滤器重命名文件以使其不再符合您的请求条件
一个选项是获取文件列表,然后从文件列表中构建您的请求URL,但这需要您单独访问SFTP服务器以获取此列表,或者只是知道您正在查找的文件的名称在您尝试请求它们之前。