首页 > 解决方案 > Mule4 使用读取连接器读取文件

问题描述

我对 Mule4 非常陌生,并且是第一次使用它。我正在尝试将文件从一个目录移动到另一个目录。我有一个“读取文件”连接器和“写入文件”连接器。在读取连接器中,我指定了文件路径和工作目录。在写入连接器上,我还指定了工作目录和路径。但是,文件不会从源目录移动到目标目录。但是,如果我在流程的开头添加了一个 HTTP 侦听器,那么如果我通过http://localhost:8081访问它,它将起作用。但是我想知道每当源中有新文件时如何完成此操作,因此流程会自动将文件从源目录移动到目标目录?请看截图

此流程不起作用

此流程有效

标签: mulemule-esb

解决方案


您需要一些东西来触发流程运行。file:read不会自动执行此操作,这就是为什么触发的 http 请求对您有效。

flow-ref所有流都需要一个“源”来触发它们,除非您使用(或使用lookup()从dataweave)从其他流中调用它们。

如果您知道所需的确切文件,则可以在file:read触发流程之前放置一个调度程序:

<scheduler>
  <scheduling-strategy>
    <fixed-frequency startDelay="5" frequency="10" timeUnit="SECONDS"/>
  </scheduling-strategy>
</scheduler>

或者您可以使用 file:listener 直接监听目录等中的新文件作为源:

<flow name="onNewFile">
  <file:listener config-ref="file" directory="test-data/in" autoDelete="true">
    <scheduling-strategy>
      <fixed-frequency frequency="1000"/>
    </scheduling-strategy>
  </file:listener>
  ...
</flow>

您可以使用固定频率或 cron。更多细节在这里:https ://docs.mulesoft.com/mule-runtime/4.1/scheduler-xml-reference


推荐阅读