在使用SpringDSL“玩骆驼”时,我遇到了以下问题。假设预期的消息流如下所示:
客户端将带有XML正文的HTTP Post消息发送到camel
camel将HTTP Post消息代理到服务器,使用
来自接收到的XML主体的信息(例如:使用xpath筛选出某个参数)
在camel收到回复后,camel使用1中接收到的XML体中的参数向服务器发送HTTP PUT消息。
比如:

<route>
   <from uri="...">
   <to uri="...">
   <to uri="...">
 </route>

问题:如何将参数存储在步骤1中的SpringDSL中,以便稍后在步骤3中使用它们?
因此,我想从步骤1中收到的消息的XML体中提取XML参数,并将它们放入变量中,稍后我可以使用这些变量来组成步骤3中要发送的消息。
为了提取参数,我考虑使用xpath。看起来不错,但我不知道如何将xpath的输出放入变量中,然后在稍后使用该变量…(语法??)
注:如你所见,我的发展知识是相当有限的…对不起。但如果有人能帮上忙的话还是很好的。

最佳答案

您可以像这样在Exchange属性或消息头中设置存储数据…

.setHeader("ID", XPathBuilder.xpath("/order/@id", String.class))
.setProperty("ID", XPathBuilder.xpath("/order/@id", String.class))

然后像这样在bean/处理器中从交换中检索它们…
String propId = (String) exchange.getProperty("ID");
String headerId = (String) exchange.getIn().getHeader("ID");                        }

10-06 12:41
查看更多