以下是我尝试实施的方案:
远程访问FTP服务器 将大文件(大小为3gig)复制到本地文件夹 将本地文件流式传输到Camel处理器,一次将文件批处理100行。 将已批处理的行集写入Kafka主题。
现在我已经弄清楚了第一部分。我能够将文件读入本地目录。问题是,我如何踢第二条路线(将本地文件流式传输到Kafka)?有没有办法在同一条路线中将所有这些任务链接在一起,或者我应该有多条路线:
1表示FTP - >本地文件然后1为本地文件 - > KAFKA
如果我需要两条路线,那么在第一条路线完成后启动第二条路线的最佳方式是什么。
感谢您的帮助。此外,这是已经运行的FTP部分。
public void configure() throws Exception {
from(fullyBuiltFtpPath)
.routeId("FTP ENDPOINT CONSUMER" + UUID.randomUUID().toString())
.process(new FtpToLocalFileProcessor())
.to("file:c:\\temp")
.log(LoggingLevel.INFO, "FILENAME: ${header.CamelFileName}").end();
}
答案 0 :(得分:0)
在Linux环境中生成文件并在文件夹中同时使用它并不是错误的,但这取决于环境。但是,camel提供了一种有用的机制,即“doneFileName”,可以在消费者和生产者中指定。 更多详情:http://camel.apache.org/file2.html
您可以在“从其他人直接删除文件的文件夹中使用文件”部分找到更多详细信息。
答案 1 :(得分:0)
我最终将路线分成两条不同的路线:
1。)从FTP服务器检索文件并将其存储在本地临时目录中 2.)启动文件路由以侦听本地临时目录并使用该文件。
这不太理想,但它现在有效。谢谢你的帮助。