Apache Camel Chaining Routes在一起

时间:2016-04-14 22:06:18

标签: java apache-camel camel-ftp

以下是我尝试实施的方案:

远程访问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();
}

2 个答案:

答案 0 :(得分:0)

在Linux环境中生成文件并在文件夹中同时使用它并不是错误的,但这取决于环境。但是,camel提供了一种有用的机制,即“doneFileName”,可以在消费者和生产者中指定。 更多详情:http://camel.apache.org/file2.html

您可以在“从其他人直接删除文件的文件夹中使用文件”部分找到更多详细信息。

答案 1 :(得分:0)

我最终将路线分成两条不同的路线:

1。)从FTP服务器检索文件并将其存储在本地临时目录中 2.)启动文件路由以侦听本地临时目录并使用该文件。

这不太理想,但它现在有效。谢谢你的帮助。