0

伙计们。

我必须使用 apache camel 并行处理 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);

我尝试将它与管道和 to 一起使用,但这两个选项都没有任何效果。

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”)。

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

4

1 回答 1

1

根据骆驼文档:

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

所以发生的情况是,文件内容被赋予了四个路由,它们都处理相同的内容并做同样的事情。

根据您的要求,请尝试使用 SEDA 组件,该组件分叉出一个新线程以进行进一步处理。

SEDA 组件

于 2018-11-02T04:46:06.257 回答