我想知道mule文件连接器是否总是轮询源目录,或者是否可以覆盖此行为。
我配置了一个端点,使用文件连接器从FTP位置读取文件,然后对其进行处理。但我的要求是文件只应在请求时读取,例如从Java调用端点时。通过控制此行为,我可以在一天结束时调用端点,并在白天读取放置在源的所有文件。
但是mule会继续轮询源位置,并在文件放置到源位置后立即下载文件。我试图看看我是否可以通过服务覆盖来实现我想要的行为,但似乎并不是显而易见的。
是否有不同的方法从源读取文件或者是否可以在mule中覆盖轮询行为?
答案 0 :(得分:3)
您可以通过以下方法实现此目的
希望这有帮助。
答案 1 :(得分:1)
通过我从@Jason和@anupambhusari收到的指针,我能够解决我面临的问题。我把我的骡子流放在下面,跳跃它会帮助别人。
在下面的骡子流中,我能够调用vm端点" fileReader"从FTP服务器下载文件,然后在" CopyFile"的帮助下将文件复制到本地文件夹。流动。
<ftp:connector name="FTP_Connector" pollingFrequency="1000" validateConnections="true" doc:name="FTP"/>
<flow name="HTTP-RequestFlow">
<vm:inbound-endpoint exchange-pattern="request-response" path="/fileReader" doc:name="vm"/>
<mulerequester:request resource="ftp://<username>:<password>@<host>:<port>/<FTP resource Path>/?FTP_Connector" doc:name="Mule Requester"/>
<flow-ref name="CopyFile" doc:name="Copy File"/>
/flow>
<flow name="CopyFile" >
<file:outbound-endpoint path="output" outputPattern="#[message.inboundProperties.'originalFilename']" responseTimeout="10000" doc:name="File"/>
<set-payload value="Got a File" doc:name="Set Payload"/>
<logger message="Copying files on local disk #[message.payload]" level="INFO"/>
</flow>
答案 2 :(得分:0)
如果您可以通过在一天结束时设置文件轮询而不必通过Java程序触发它来满足您的要求,则可以创建石英作业。有关代码示例,请参阅此question。