用骆驼处理 2 个不同的文件

Process 2 different files with camel

如何使用 camel(使用 ftp)读取两个不同的文件并写入唯一的 JSON? 据我所知 "from" 只能读取一个文件。

from("ftp://myftp@localhost:21" +
                "/myFolder/" +
                "?" +
                "password=RAW(myPassword)" +
                "&include=file1.txt" +
                "&passiveMode=true" +
                "&delete=true")
            .log("Connected to FTP 1")

您可以编写自己的 AggregationStrategy 并在 from 端点之后使用 aggregate(AggregationStrategy aggregationStrategy)。 这是 AggregationStrategy.

的文档和一些示例

我想你需要的是一个 pollEnrich 模式,看起来像这样:

from("ftp:...&include=file1.txt...")
    .log("Connected to FTP 1")
    .pollEnrich("ftp:...&include=file2.txt...", new MyFileAggregationStrategy() )

或者,如果您需要指定一个动态文件名,像这样:

from("ftp:...&include=file1.txt...")
    .log("Connected to FTP 1")
    .pollEnrich().simple("ftp:...&include=${header.file2Name}...")
        .aggregationStrategy( new MyFileAggregationStrategy() )

您将需要创建一个 AggregationStrategy,这可以直接创建您的 JSON,或者您可以将输出发送到创建您的 JSON 的处理器。

您需要查看 pollEnrich 上的手册,以确保您正确处理 file1.txt 出现而没有对应的 file2.txt 时发生的情况,这样它就不会阻塞除非你想要它(在这种情况下你需要能够在你的 AggregationStrategy 中处理空值)。

希望对您有所帮助。