Trigger a Flow When a New File Is Created or Modified Example - Mule 4

Anypoint Connectors for File, FTP, and SFTP provide an On New or Updated File operation that polls a directory for files that have been created or updated. A message is generated for each file that is found.

The following strategies determine that a file is new:

  • Set the Auto delete parameter to True to delete each file after it is processed, which causes all files obtained in the next poll to be necessarily new.

  • Set the Move to directory parameter to move each file to a different directory after it is processed, which achieves the same effect as Auto delete but without losing the file.

  • Set the Watermark parameter to pick only files that have been created or updated after the last poll was executed.

You can also use a matcher for additional filtering of files.

Configure the On New or Updated File Operation in Studio

To add and configure the On New or Updated File operation in Studio, follow these steps:

  1. In the Mule Palette view, search for sftp and select the On New or Updated File operation.

  2. Drag the On New or Updated File operation onto the Studio canvas.

  3. In the General tab of the operation configuration screen, click the plus sign (+) next to the Connector configuration field to access the global element configuration fields.

  4. Specify the connection information and click OK.

  5. Set the Directory field to the directory path on which pooled files are contained, for example, test-data/in.

  6. Set the Auto delete parameter to True.

  7. Select the Watermark field to enable watermarking.

The following screenshot shows the On New or Updated File operation configuration:

On New or Updated File operation configuration in Studio
Figure 1. On New or Updated File operation configuration

In the XML editor, the <sftp:listener> configuration looks like this:

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

    <flow-ref name="processFile" />
</flow>