没有轮询的Mule文件连接器

时间:2017-09-24 17:34:07

标签: java mule

我想知道mule文件连接器是否总是轮询源目录,或者是否可以覆盖此行为。

我配置了一个端点,使用文件连接器从FTP位置读取文件,然后对其进行处理。但我的要求是文件只应在请求时读取,例如从Java调用端点时。通过控制此行为,我可以在一天结束时调用端点,并在白天读取放置在源的所有文件。

但是mule会继续轮询源位置,并在文件放置到源位置后立即下载文件。我试图看看我是否可以通过服务覆盖来实现我想要的行为,但似乎并不是显而易见的。

是否有不同的方法从源读取文件或者是否可以在mule中覆盖轮询行为?

3 个答案:

答案 0 :(得分:3)

您可以通过以下方法实现此目的

  1. 使用Poll SchedularCron Scheduler来挑选文件 在一天的固定时间自动。
  2. 对于手动触发,您可以使用公开HTTP端点和选择文件 你的流程mule-module-requester。骡子请求者允许你 选择单一或多种资源。
  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