在使用 Spring DSL 玩 Camel 时,我遇到了以下问题。假设预期的消息流如下所示:
- 客户端将带有 XML 正文的 HTTP POST 消息发送给 CAMEL
- CAMEL 向服务器代理 HTTP POST 消息,并使用稍微调整的 URI
来自接收到的 XML 主体的信息(例如:使用 XPATH 过滤掉某个参数)
- CAMEL 收到回复后,CAMEL 使用 1 中收到的 XML 正文中的参数向服务器发送 HTTP PUT 消息
所以像这样:
<route>
<from uri="...">
<to uri="...">
<to uri="...">
</route>
问题:如何在步骤 1 中将参数存储在 Spring DSL 中,以便稍后在步骤 3 中使用它们?
因此,我想从步骤 1 中收到的消息的 XML 正文中提取 XML 参数,并将它们放入变量中,稍后我可以使用这些变量来编写要在步骤 3 中发送的消息。
为了提取参数,我正在考虑使用 XPATH。看起来不错,但我只是不知道如何将 XPATH 的输出放入变量中,然后稍后使用该变量......(语法??)
注意:正如你所看到的,我的开发知识相当有限......对此感到抱歉。但如果有人能帮忙解决这个问题那就太好了:)。
您可以在中设置存储数据Exchange http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html像这样的属性或消息标题...
.setHeader("ID", XPathBuilder.xpath("/order/@id", String.class))
.setProperty("ID", XPathBuilder.xpath("/order/@id", String.class))
然后从 Exchange 的 bean/processor 中检索它们,如下所示......
String propId = (String) exchange.getProperty("ID");
String headerId = (String) exchange.getIn().getHeader("ID"); }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)