如何从Camel中的ProcessDefinition获取Exchange.In:Body对象的内容

时间:2011-10-05 12:37:18

标签: java apache-camel

我正在使用Apache Camel在两个系统之间集成数据。我希望将生成的xml写入xml文件。我希望将该文件的名称基于某些数据,这些数据在集成链启动时是未知的。

当我完成第一个富集步骤时,必要的数据在Exchange对象中。

所以问题是如何从进程链外的exchange.getIn()。getBody()方法获取数据,以便为我的输出文件生成所需的文件名,并作为最后一步,将xml写入这个文件?或者还有其他方法可以实现这一目标吗?

这是我当前的routebuilders配置方法的流程链:

from("test_main", "jetty:server")
.process(new PiProgramCommonProcessor())
.enrich("piProgrammeEnricher", new PiProgrammeEnricher())
// after this step I have the data available in exchange.in.body .to(freeMarkerXMLGenerator)
.to(xmlFileDestination) .end();

最好的问候 RythmiC

1 个答案:

答案 0 :(得分:1)

文件组件从标题(如果存在)中获取文件名。因此,您只需使用所需的文件名为邮件添加标题。

标题应使用“CamelFileName”键,该键也是从Exchange.FILE_NAME定义的。

详情请见:http://camel.apache.org/file2