我正在学习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参数绑定不起作用?
答案 0 :(得分:3)
您不能只System.out.println
Document
个实例,并让它显示XML内容。您在日志中看到的内容是预期的,它可能只显示Document: null
或其他内容,但这并不意味着没有内容。