在Apache Camel中多播文件的问题

时间:2018-10-30 19:17:00

标签: java file apache-camel sftp

人。

我必须使用apache骆驼并行处理10个文件,然后通过FTP命令发送。我进行了一些研究,并听说了“ multicast()”命令。但这显然不起作用,因为我正在服务器中一一接收文件...:/

我的文件路径:

 fromF("file://%s?antInclude=**/*.sync&recursive=true&noop=true", configurationManager.getDestinationFilesFolderPath())
        .routeId("FTP_Snapshot_Fetcher")
        .setHeader("OriginalFileName", simple("${file:name.noext}"))
        .multicast()
        .parallelProcessing()
            .to(ftpRoutesForSameGroup.split(separator))
            .toD("file://" + configurationManager.getDestinationFilesFolderPath() + "?fileName=${in.header.OriginalFileName}" + DAConfigurations.FILE_EXTENSION);

我尝试将其用于管道和,但是这两个选项均无效。

sftp组件是否有可能泄漏?

它看起来像:

.toD("sftp://"
                + ftpEndpoint.getUser() + "@"
                + ftpEndpoint.getUrl()  + ":"
                + ftpEndpoint.getPort() + "/ftp/${in.header.pathToFile}"
                + "?password=" + ftpEndpoint.getPassword()
                + "&autoCreate=true&passiveMode=true&binary=true&tempFileName=${file:name.noext}"
                + DAConfigurations.FILE_EXTENSION_ON_SYNC
            )

ftpRoutesForSameGroup是一个字符串,其中包含所有分隔的路由列表(例如:“ direct:r1; direct:r2; direct:r3”)。

有人知道如何以正确的方式修复它(发送所有文件,或并行发送尽可能多的文件)吗?

1 个答案:

答案 0 :(得分:1)

根据骆驼文档:

多播允许将同一消息路由到多个端点,并以不同的方式处理它们。

因此,发生的是,文件内容分配给了这四个路由,并且它们全部处理相同的内容并执行相同的操作。

根据您的要求,尝试使用SEDA组件,该组件会派出新线程进行进一步处理。

SEDA COMPONENT