ule子文件传输不会删除源文件

Pal*_*ami 5 file transfer mule

我正在使用Mule 3.2,并且正在将文件从一个位置移动到另一位置。错误/问题是Mule一次又一次地处理相同的文件,并且不删除它们。

控制台显示:

org.mule.transport.file.FileMessageReceiver: Lock obtained on file:
Run Code Online (Sandbox Code Playgroud)

我的配置文件如下:

<flow name="File-FTP-Bridge">
    <file:inbound-endpoint path="${outbound.input.path}"
        moveToDirectory="${outbound.input.backup.path}">
        <file:filename-wildcard-filter
            pattern="*.msg" />
    </file:inbound-endpoint>
    <ftp:outbound-endpoint user="${outbound.ftp.user}"
        password="${outbound.ftp.password}" host="${outbound.ftp.host}"
        path="${outbound.ftp.path}" port="${outbound.ftp.port}"
        outputPattern="#[header:originalFilename]">
    </ftp:outbound-endpoint>
</flow>
Run Code Online (Sandbox Code Playgroud)

我找不到此问题的根本原因。提前致谢。

Dav*_*sot 3

您的文件端点缺少pollingFrequency属性,这意味着它使用默认值 1000 毫秒。这使得 Mule 轮询文件的速度比 FTP 端点处理它们的速度要快。尝试例如:

pollingFrequency="10000"
Run Code Online (Sandbox Code Playgroud)

如果这还不够好,因为 FTP 上传具有不可预测的性能(因此 Mule 仍然会重试正在上传的文件),那么如果您的文件足够小以适合内存,请尝试添加:

<object-to-byte-array-transformer />
Run Code Online (Sandbox Code Playgroud)

您的入站端点和出站端点之间。这会在尝试 FTP 上传之前将文件加载到内存中并将其立即移动到 outbound.input.backup.path。当然,如果FTP上传失败,你就必须将文件移回outbound.input.path...