我想使用下载和解析大型 CSV camel-csv
,但我无法找到令我满意的解决方案。camel-csv
似乎旨在读取和处理放置在磁盘上的文件。
我想通过 HTTP 下载 URL 列表并在下载流时对其进行解析。我可以通过绕过来做到这camel-csv
一点:
from("mock:in").process(new TaxiDataProcessor(new DataCSVParserFactory())).to("mock:out");
public class DataProcessor implements Processor {
private final DataCSVParserFactory csvParserFactory;
@Inject
public DataProcessor(DataCSVParserFactory csvParserFactory) {
this.csvParserFactory = csvParserFactory;
}
@Override
public void process(Exchange exchange) throws Exception {
String file = (String) exchange.getIn().getBody();
URL url = new URL(file);
CSVParser parser = csvParserFactory.build(url);
for (CSVRecord csvRecord : parser) {
exchange.getIn().setBody(csvRecord);
}
}
}
但是是否可以使用类似camel-ahc
下载文件并将其通过管道传输到 csv 解组的方法?就像是:
from("direct:input").unmarshall().csv().to("direct:out");
template.send("ahc:uri");