当前位置: 首页 > 知识库问答 >
问题:

Apache Camel | FTP |只使用单个文件

傅毅然
2023-03-14

我正在尝试读取ftp目录中的所有文本文件,解析它们。如果解析成功,则将它们移动到不同的目录(不是默认目录,即。完成目录),如果解析失败,则文件应保留在ftp目录中。这个概念看起来很简单,但我的路由只从ftp读取单个文件,并且在获取一个文件后路由自行结束。

代码如下:

@Override
    public void configure() throws Exception {

         from(EndPointConstants.DIRECT + GetDriverProductInfo.class.getSimpleName())  
        .pollEnrich(ftp://ingestion_user@10.207.6.42/fantics?password=******&recursive=true)
        .to("file://test/readFile")

它只能够获取一个文件,而这个过程不是递归发生的,这与PollRich有关吗?

共有1个答案

公西良骏
2023-03-14

如果解析成功,则将它们移动到不同的目录(而不是默认目录,即。完成目录)

使用如下示例:

.to("file://test/readFile?autoCreate=true&moveFailed=.failed/${date:now:yyyyMMdd}/${file:name}&move=.processed/${date:now:dd-MM-yyyy}/${file:name}")

来自Camel文档(FTP/SFTP/FTPS组件):

默认情况下,FTP使用者将保留远程FTP服务器上未触及的已使用文件。如果要删除文件或将其移动到其他位置,必须显式配置它。例如,可以使用delete=true删除文件,或者使用move=。完成,将文件移动到隐藏的完成子目录中。常规文件使用者则不同,因为默认情况下,它会将文件移动到一个文件夹中。骆驼子目录。Camel默认情况下不会为FTP使用者执行此操作的原因是,默认情况下,它可能没有移动或删除文件的权限。

因此,您可以使用以下示例:

&noop=false

&move

&delete=false

编辑:

我认为你应该想出这样的东西(下面的代码),因为pollRich()不适合这种情况。

(强烈建议不要使用以下代码,因为它不是一个使用示例

from("direct:scan")
    .process(new Processor()
    {
        public void process(Exchange exchange) throws Exception
        {
            ConsumerTemplate consumerTemplate = exchange.getContext().createConsumerTemplate();
            ProducerTemplate producerTemplate = exchange.getContext().createProducerTemplate();
            producerTemplate.setDefaultEndpointUri("file:..");
            producerTemplate.send(consumerTemplate.receive("ftp:.."));
        }
    });

干杯

 类似资料:
  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我有两个服务器轮询到相同的ftp位置。当一个文件被放置在该位置时,两个服务器都将选择这些文件。但是我只需要一个服务器来选择文件,处理和删除。我使用的是Camel2.16.2版本。有什么办法可以解决这个问题吗?

  • 我有一个客户端试图在被动模式下将多个文件上载到FTP服务器。 客户端发送PASV命令,服务器使用相关的ip和端口进行响应。 在一个数据连接上是否可以发送多个文件?或者客户端需要发送PASV命令并为每个文件获取一个新的端口?

  • 我正在IIS服务器上使用网站面板。我想使用ftp上载文件 我使用了以下代码: 这段代码运行没有错误。当我使用网站面板的文件管理器时,一个文件创建了“Name.ext”,但这个文件大小是0 KB。为什么?我有什么问题?! 我确信windows防火墙允许我这么做。 更新:我正在使用UploadFileTask和UploadFile(unasync)进行操作,但结果与async相同:(

  • 我需要将文件从文件夹同步到restendpoint。因此,如果文件被放置在特定文件夹中,我需要将该文件发送到接受多部分文件的RESTendpoint。我正在使用ApacheCamel来实现这一点。 RESTendpoint在Spring中编写,如下所示: 我是Camel的新手,并且已经弄清楚了如何通过构建路由并获取文件来轮询目录,但是我无法弄清楚如何使用此路由将此文件放入其余endpoint。这是

  • 我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题