Java 将路线链接在一起

Java 将路线链接在一起,java,apache-camel,camel-ftp,Java,Apache Camel,Camel Ftp,以下是我尝试实现的场景: 远程连接到FTP服务器 将大文件(3gig+大小)复制到本地文件夹 将本地文件流式传输到Camel处理器中,一次批处理100行文件。 将成批的行写入卡夫卡主题 现在我已经弄清楚了第一部分。我能够将文件读入本地目录。问题是,如何启动第二条路径(将本地文件流式传输到Kafka)?有没有办法将所有这些任务链接到同一路线上,或者我应该有多条路线: 1用于FTP->LOCAL文件,然后1用于LOCAL文件->KAFKA 如果我需要两条路线,那么在第一条路线完成后,启动第二条路线的

以下是我尝试实现的场景:

远程连接到FTP服务器 将大文件(3gig+大小)复制到本地文件夹 将本地文件流式传输到Camel处理器中,一次批处理100行文件。 将成批的行写入卡夫卡主题

现在我已经弄清楚了第一部分。我能够将文件读入本地目录。问题是,如何启动第二条路径(将本地文件流式传输到Kafka)?有没有办法将所有这些任务链接到同一路线上,或者我应该有多条路线:

1用于FTP->LOCAL文件,然后1用于LOCAL文件->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”,可以在consumer和producer中指定。 详情如下:


您可以在“从其他人直接放置文件的文件夹中使用文件”一节中找到更多详细信息。

我最终将路由分为两个不同的路由:

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


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

您可以使用来监视在文件中保存100行批处理的目录。但是你为什么不直接把这批货送到卡夫卡?您是否需要对文件执行其他操作?这是另一个选项,但我不知道如何直接从FTP路由批处理文件。有没有一个组件可以让我在FTP路由将文件复制到localTempDirectory后将其流式传输?我们如何处理路由2需要很长时间处理的情况?我不想让路由1填满文件系统。在我的例子中,我对路由1进行了文件锁定(从FTP检索),然后当释放锁定时,路由2将拾取文件并继续处理。