【问题标题】:Apache Camel SFTP Consumer not deleting file after readingApache Camel SFTP消费者在阅读后不删除文件
【发布时间】:2020-10-23 03:23:47
【问题描述】:

我发现 Apache Camel SFTP 有一个奇怪的行为。即使设置了delete=true属性,接收后也不会删除文件。我正在使用3.0.0-M3 版本的camel-ftp

以下是我的 SFTP 配置,

sftp://<<HOST_NAME>>:<<PORT>>/<<PATH>>?username=<<USERNAME>>" +
                    "&password=<<PASSWORD>>" +
                    "&preferredAuthentications=password" +
                    "&readLock=changed" +
                    "&readLockMinAge=30000" +
                    "&delay=20000" +
                    "&delete=true";

现在 Camel 可以读取文件,但读取后不会删除文件。在浏览文档时,它说

删除(消费者)- 如果为true,则文件处理成功后将被删除。

  • camel 如何定义是否成功处理?我们是否需要为 Camel 设置任何交换属性以将其标记为已成功处理?

收到文件后,我所做的就是将其传递到另一条路线,如下所示,

from(endpointUri).to("direct:procesSftpFile");

我应该将其从 direct 更改为 vm 还是 seda

【问题讨论】:

    标签: apache-camel camel-ftp


    【解决方案1】:

    似乎没有人遇到过这个问题,我不知何故弄明白了这是从哪里开始发生的。

    问题不是因为 Camel sftp 组件,而是因为我调用的那段代码。

    我的流程的第二部分看起来像这样,

    from("direct:procesSftpFile")
    .log("...")
    // logging and other regular processing
    ....
    // sending to vm InOnly 
    .to("vm:queue1?exchangePattern=InOnly")
    .. some more processing..
    .to("vm:queue2?exchangePattern=InOnly")
    

    所以问题在于在上面的代码片段中调用那些 queue1 和 queue2。

    评论它们,修复它,然后 sftp 开始删除文件。为了调用虚拟机,我使用producerTemplate.asyncSend 而不是to() 作为解决方法。

    我仍然困惑的一件事是,如果我们使用 InOnly 交换模式,那么为什么它会影响 sftp 行为?也许我应该在一个单独的问题中问这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多