如何从 Camel 中的 ProcessDefinition 获取 Exchange.In:Body 对象的内容
我正在使用 Apache Camel 集成两个系统之间的数据。我希望将生成的 xml 写入 xml 文件。我想将该文件的名称基于集成链启动时未知的一些数据。
当我完成第一个丰富步骤时,所需的数据位于 Exchange 对象中。
所以问题是如何从流程链外部的 Exchange.getIn().getBody() 方法获取数据,以便为我的输出文件生成所需的文件名,并作为最后一步,将 xml 写入此文件?或者还有其他方法可以实现这一点吗?
这是来自routebuilders配置方法的我当前的流程链:
来自(“test_main”,“jetty:服务器”)
.process(new PiProgramCommonProcessor())
.enrich("piProgrammeEnricher", new PiProgrammeEnricher())
// 在此步骤之后,我在 Exchange.in.body 中获得了可用数据 .to(freeMarkerXMLGenerator)
.to(xml文件目标) 。结尾(); 致以
最诚挚的问候 节奏
I am integrating data between two systems using Apache Camel. I want the resulting xml to be written to an xml file. I want to base the name of that file on some data which is unknown when the integration chain starts.
When I have done the first enrich step the data necessary is in the Exchange object.
So the question is how can I get data from the exchange.getIn().getBody() method outside of the process chain in order to generate a desirable filename for my output file and as a final step, write the xml to this file? Or is there some other way to accomplish this?
Here is my current Process chain from the routebuilders configuration method:
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();
best regards
RythmiC
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
文件组件从标头(如果存在)中获取文件名。因此,您只需使用所需的文件名向消息添加标头即可。
标头应使用键“CamelFileName”,该键也是从 Exchange.FILE_NAME 定义的。
查看更多详细信息:http://camel.apache.org/file2
The file component takes the file name from a header (if present). So you can just add a header to your message with the desired file name.
The header should use the key "CamelFileName" which is also defined from Exchange.FILE_NAME.
See more details at: http://camel.apache.org/file2