删除文件时Mule FTP传输失败

删除文件时Mule FTP传输失败,ftp,mule,Ftp,Mule,我有一个FTP端点轮询到新文件的FTP文件夹。由于处理文件时存在并发问题,我们决定FTP连接器只有一个活动线程: <ftp:connector name="ftp" doc:name="FTP" pollingFrequency="1000" validateConnections="true"> <receiver-threading-profile maxThreadsActive="1" maxBufferSize="1000" /> <rec

我有一个FTP端点轮询到新文件的FTP文件夹。由于处理文件时存在并发问题,我们决定FTP连接器只有一个活动线程:

<ftp:connector name="ftp" doc:name="FTP" pollingFrequency="1000" validateConnections="true">
    <receiver-threading-profile maxThreadsActive="1" maxBufferSize="1000" />
    <reconnect count="5" frequency="1000"/>
</ftp:connector>
我们遇到的问题是,我们对文件执行的过程可能需要几分钟,这使得FTP连接超时,因此当流完成并且FTP连接器尝试最终删除文件时,我们会得到一个异常,因为连接超时

我的猜测是FTP端点应该在尝试删除文件之前验证连接,但看起来不像这样做


有没有办法解决这个问题?

将流处理策略设置为同步,以调动轮询线程并使用它进行处理,这样它就无法提前再次轮询。

由于FTP连接可能超时,我宁愿在开始处理文件之前将文件从FTP复制到文件位置

谢谢你的建议。我无法将文件复制到本地文件夹,因为应用程序将部署在我无权访问文件系统的环境中。无论如何,谢谢。我已经把它设为同步。问题是,在所有处理完成后,当FTP端点尝试删除该文件时,连接已超时,因此失败。即使处理失败,您也可以删除该文件吗?如果是,则在ftp:inbound之后使用对象到字节数组转换器,并将处理代码放入一个块中,这样它就不会阻塞ftp线程。是的,我正在这样做。但由于存在并发性问题,我不得不创建一个队列并逐个处理。我不喜欢的是,它将读取所有文件,删除它们,然后如果出现问题,这些文件将丢失。我想首先将原始文件移动到FTP中的不同位置,让FTP端点轮询不同的文件夹。如果出现任何问题,我仍将该文件保存在另一个文件夹中,并可以将其复制到一种“错误”文件夹中以供日后分析。我遇到了类似问题,并在流的末尾使用了一个组件来删除源ftp位置上的文件,该组件被放置在流的末尾,您是否考虑过此选项?