用骆驼处理 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 中处理空值)。
希望对您有所帮助。
如何使用 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 中处理空值)。
希望对您有所帮助。