【问题标题】:Mule file connector without polling没有轮询的骡文件连接器
【发布时间】:2018-03-05 16:44:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java mule


    【解决方案1】:

    使用我从@Jason 和@anupambhusari 收到的指针,我能够解决我面临的问题。我把我的骡子流放在下面,希望它能帮助其他人。

    在下面的 mule 流程中,我可以调用 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】:

      您可以通过以下方法实现这一点

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

      希望这会有所帮助。

      【讨论】:

      • 非常感谢您的意见,Jason 和 anupambhusari 都向我指出了我无法使用的调度程序,因为我想按需提取文件,但 Mule-module-requester 为我工作。
      【解决方案3】:

      如果您可以通过将文件轮询设置为一天结束而不必通过 Java 程序触发它来满足您的要求,您可以创建一个石英作业。有关代码示例,请参阅此 question

      【讨论】:

      • 感谢您的输入 Jason ,您评论中其他问题的参考有一些对我有帮助的好信息。
      猜你喜欢
      • 2013-01-14
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多