Apache camel Camel-CSV到Java对象的转换

Apache camel Camel-CSV到Java对象的转换,apache-camel,Apache Camel,我有一个包含一组用户的大型CSV文件。我正在寻找一种读取文件、映射到Java对象并将该对象传递给处理器的简单方法,处理器将对该对象执行一些操作。 因此,我用表示CSV文件的注释标记了一个Java bean: @CsvRecord(separator = ",") public class User { @DataField(pos = 1) private String username; @DataField(pos = 2) private String gr

我有一个包含一组用户的大型CSV文件。我正在寻找一种读取文件、映射到Java对象并将该对象传递给处理器的简单方法,处理器将对该对象执行一些操作。 因此,我用表示CSV文件的注释标记了一个Java bean:

@CsvRecord(separator = ",")
public class User {
    @DataField(pos = 1)
    private String username;
    @DataField(pos = 2)
    private String group;

}
然后,我开始编写驼峰路由代码,但是我无法找到如何将CSV作为Java对象传递给端点:

CamelContext context = new DefaultCamelContext();
    final DataFormat bindy = new BindyCsvDataFormat("com.sample.model");
    context.addRoutes(new RouteBuilder() {
        public void configure() {
            from("file:/usr/camel/in?noop=true").
            unmarshal(bindy)
            .to("??????");
        }
}); 

目标端点应该是接收用户对象的java类。有可能做到吗?谢谢

您可以使用
处理器的实例
来处理POJO:

    Processor myProcessor = new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
            // do something here
        }
    };

    from("file:/usr/camel/in?noop=true")
    .unmarshal(bindy)
    .process(myProcessor);
解决方案2:您可以使用bean。首先,添加这个“bean”类:

如果希望对bean使用不同的参数,可以使用带有
simple
表达式的方法调用,如下所示:

.bean(new MyBean(), "process(${body.get(0).etc...})")

谢谢,我已经实现了一个简单的处理器,但是为了检索对象,我必须深入到主体中,然后深入到数据的ArrayList中,而ArrayList又包含HashMaps。有没有更简单的方法从处理器检索POJO<代码>公共类SimpleProcessor实现处理器{public void process(Exchange Exchange)抛出异常{ArrayList list=(ArrayList)Exchange.getIn().getBody();for(HashMap-map:list){Iterator-iter=map.entrySet().Iterator();而(iter.hasNext()){System.out.println(“用户”+iter.next();}}不用担心,祝骆驼好运,一旦你使用它一段时间,它就是一个很棒的框架:)
from("file:/usr/camel/in?noop=true")
.unmarshal(bindy)
.bean(new MyBean())
.bean(new MyBean(), "process(${body.get(0).etc...})")