将unmarshalled对象传递给Camel处理器

时间:2016-08-03 04:23:34

标签: java spring-boot apache-camel

我在一个应用程序中使用Apache camel和spring boot。我需要从目录中读取然后解组xml读取,然后处理解组的对象以在其中设置更多数据,然后再次编组并将其发送到不同的文件夹。我使用以下路线。请告诉我如何在解组后将POJO发送到处理器。目前,默认情况下,交换机进入处理器。

@SpringBootApplication
public class CamelApplication extends FatJarRouter {

    public static void main(String ... args) {
        SpringApplication.run(CamelApplication.class, args);
    }

    @Override
    public void configure() throws Exception {
        from("file:input?noop=true")
        .log("Read from the input file")
        .unmarshal(new XMLtoPOJO())
        .log("Unmarshalled the xml")
        .process(new MyProcessortoSetMoreDatatoPOJO())
        .log("Enriched with more data in processor")
        .to("file:destination")
        .log("Written to output file");
    }
}

1 个答案:

答案 0 :(得分:1)

如果您正在使用处理器,您可以通过以下方式从交换机获取pojo:

MyPojo pojo = exchange.getIn().getBody(MyPojo.class);

您可以使用POJO bean的方法签名编写一个普通的POJO bean而不是处理器而不是处理器

 public void doSomething(MyPojo pojo)

然后从Camel调用该bean。有关详细信息,请参阅:http://camel.apache.org/bean