【问题标题】:How to close input stream of FTP inbound endpoint in Mule when streaming is used使用流式传输时如何在 Mule 中关闭 FTP 入站端点的输入流
【发布时间】:2013-07-31 23:38:43
【问题描述】:

我有一个非常简单的配置,它将文件从 FTP 服务器复制到文件出站。由于文件很大,我使用streaming 进行文件传输。这是我的配置:

 <ftp:connector name="ftpConnector" streaming="true" pollingFrequency="360000"/>

    <flow name="copyFTPtoFile">
        <ftp:inbound-endpoint name="FTP" connector-ref="ftpConnector" host="FTP" port="21" user="test" password="test" path="/Testenv" />
        <file:outbound-endpoint path="/vendor/in" />
    </flow>

我不知道如何关闭input-stream,以便在复制文件后从 FTP 服务器中删除文件。

【问题讨论】:

  • Mule 应该会自动为您解决这个问题,不是吗?
  • 当我在 ftp 连接器上有 streaming=true 时不会。 。如果在入站端点上使用流式传输,则关闭输入流是用户的责任。如果在出站端点上使用流式传输,Mule 会自动关闭流。来自此 [link] mulesoft.org/documentation/display/current/…
  • 它们可能意味着如果您在自定义组件中接收流。

标签: java file file-io mule


【解决方案1】:

由于payload是InputStream,下面的file outbound endpoint dispatcher代码会被执行:

InputStream is = event.transformMessage(DataTypeFactory.create(InputStream.class));
IOUtils.copyLarge(is, fos);
is.close();

所以应该为你自动关闭流。

【讨论】:

  • 但是如果我有streaming=true,苍蝇不会从 FTP 服务器中删除。如果我在 FTP 连接器上删除 streaming=true,那么文件会被自动删除
  • 这对我来说听起来像是另一个问题。
  • 你是对的。虽然我想问如何删除文件,但有这样的想法,如果输入流关闭,文件将被自动删除
  • 不使用 FTP,删除发生在入站消息发送的后处理步骤中,并且只有在没有挂起的 FTP 命令时才会发生。
  • 我为这个stackoverflow.com/questions/18366159/…打开了另一个问题。能不能请你点灯
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2021-03-09
相关资源
最近更新 更多