Camel bean参数绑定不起作用

时间:2018-04-03 15:27:22

标签: java apache-camel

我正在学习Apache Camel框架,试图实现简单的bean参数绑定示例。

我有以下路线

from("timer://foo?delay=2000")
    .setBody(simple("hello"))
    .log("${body}")
    .transform(simple("<foo>${body}</foo>"))
    .log("${body}")
    .bean(DocumentProcessorBean.class, "process");

以下的Spring bean

@Component("documentProcessorBean")
public static class DocumentProcessorBean {

    public Document process(@Body Document doc, @Headers Map<String, Object> headers) {
        System.out.println(doc);
        System.out.println(headers);
        return doc;
    }
}

但是,参数绑定似乎不起作用,因为我正在获取没有内容的Document实例,如日志中所示

2018-04-03 18:14:39.354  INFO 7740 --- [1 - timer://foo] route1                                   : hello
2018-04-03 18:14:39.354  INFO 7740 --- [1 - timer://foo] route1                                   : <foo>hello</foo>
[#document: null]
{breadcrumbId=ID-DESKTOP-LI5P50P-1522768469501-0-6, firedTime=Tue Apr 03 18:14:39 EEST 2018}

我也对camel使用的“隐式”数据格式感到困惑。例如,使用simple的转换是否总是返回一个字符串?在路由中使用字符串,编组格式(例如xstream)或绑定类格式(POJO)有什么区别,或者甚至是否重要?通常,当我需要在路径中的这些格式之间进行转换时,会出现什么情况?最重要的是,为什么在这个特定路线中的bean参数绑定不起作用?

1 个答案:

答案 0 :(得分:3)

您不能只System.out.println Document个实例,并让它显示XML内容。您在日志中看到的内容是预期的,它可能只显示Document: null或其他内容,但这并不意味着没有内容。