Целью является создание отчета каждый час путем сравнения двух файлов CSV с использованием Camel 3.0.0. Один находится на FTP-сервере, другой на диске. Как использовать шаблон обогащения опроса в сочетании с демаршализацией CSV на диске с помощью Bindy Dataformat?
Пример кода (для простоты конечная точка FTP заменена конечной точкой файла):
@Component
public class EnricherRoute extends RouteBuilder {
@Override
public void configure() {
from("file://data?fileName=part_1.csv&scheduler=quartz2&scheduler.cron=0+0+0/1+*+*+?")
.unmarshal().bindy(BindyType.Csv, Record.class)
.pollEnrich("file://data?fileName=part_2.csv", new ReportAggregationStrategy())
.marshal().bindy(BindyType.Csv, Record.class)
.to("file://reports?fileName=report_${date:now:yyyyMMdd}.csv");
}
}
проблема в этом примере состоит в том, что в ReportAggregationStrategy
resource
(исходя из data/part_2.csv
, см. ниже) не является беспорядочным. Как также демаршировать data/part_2.csv
?
public class ReportAggregationStrategy implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange original, Exchange resource) {
final List<Record> originalRecords = original.getIn().getBody(List.class);
final List<Record> resourceRecords = resource.getIn().getBody(List.class); // Results in errors!
...
}
}