Apache Camel 将路由链接在一起

Apache Camel Chaining Routes together

这是我要实现的场景:

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

在Linux环境下,在文件夹中生成文件并同时使用它并没有错,但这取决于环境。但是,camel 提供了一个有用的机制,即可以在消费者和生产者中指定的 "doneFileName"。 此处有更多详细信息:http://camel.apache.org/file2.html

您可以在 "Consuming files from folders where others drop files directly" 部分找到更多详细信息。

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

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

这并不理想,但目前有效。感谢您的帮助。