Apache Camel中多播文件的java问题
伙计们
我必须使用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”)
是否有人知道如何以正确的方式修复它(发送所有文件,或并行发送尽可能多的文件)
# 1 楼答案
根据Camel文件:
多播允许将相同的消息路由到多个端点,并以不同的方式处理它们
因此,所发生的是,文件内容被提供给四个路由,它们都处理相同的内容,做相同的事情
根据您的需求,可以尝试使用SEDA组件,它会分叉出一个新的线程以进行进一步处理
SEDA COMPONENT