【发布时间】:2018-04-03 15:27:22
【问题描述】:
我正在学习 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}
我也对骆驼使用的“隐式”数据格式感到困惑。例如,使用simple 的转换是否总是返回一个字符串?在路由中使用字符串、编组格式(例如 xstream)或绑定类格式(POJO)有什么区别,或者它甚至重要吗?一般在路由中需要在这些格式之间进行转换的场景有哪些?还有最重要的是,为什么这个特定路由中的bean参数绑定不起作用?
【问题讨论】:
标签: java apache-camel