【问题标题】:Mule FTP transport failing when deleting file删除文件时 Mule FTP 传输失败
【发布时间】:2013-11-26 23:36:39
【问题描述】:

我有一个 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 mule


【解决方案1】:

将流处理策略设置为synchronous,调动轮询线程进行处理,这样就不能再早点轮询了。

【讨论】:

  • 我已将其设置为同步。问题是,在所有处理完成后,当 FTP 端点尝试删除文件时,连接已经超时,所以失败了。
  • 即使处理失败也可以删除文件吗?如果是,则在ftp:inbound 之后使用object-to-byte-array 转换器并将您的处理代码放入&lt;async&gt; 块中,这样它就不会阻塞FTP 线程。
  • 是的,我正在这样做。但是由于我们有并发问题,我不得不创建一个队列并一个一个处理。我不喜欢的是它会读取所有文件,删除它们,然后如果出现问题,这些文件将丢失。我正在考虑首先将原始文件移动到 FTP 中的不同位置,并让 FTP 端点轮询不同的文件夹。如果出现任何问题,我仍然将文件保存在另一个文件夹中,并且可以将其复制到一种“错误”文件夹中以供以后分析。
【解决方案2】:

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

【讨论】:

  • 感谢您的建议。我无法将文件复制到本地文件夹,因为该应用程序将部署在我无权访问文件系统的环境中。无论如何,谢谢。
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
相关资源
最近更新 更多