Apace camel路由将值设置为setHeader并将该值作为输入传递给脚本

时间:2018-03-28 10:56:43

标签: routes apache-camel spring-dsl

请找到以下路线计划,

<routes xmlns="http://camel.apache.org/schema/spring"> 
<route id="com.performancebikes.RouteScript" autoStartup="false"> 
<from uri="b2bmbFileSystem:com.performancebikes/tempSFTP/in"/>
<convertBodyTo type="java.lang.String" charset="UTF-8"/>
<convertBodyTo type="org.w3c.dom.Document" charset="UTF-8"/>
<split>
<xpath>/B2B_Documents/B2B_PurchaseOrder/Header/HeaderInfo/PurchaseOrderNumber/text()</xpath>
<setHeader headerName="body">
  <constant>${body}</constant>
</setHeader>
<log message="${body}"/>
<to uri="b2bmbScript:com.trainingaccount11/Ship" />
</split>
</route> 
</routes>

在这个来自Xpath的表达式中,我按预期将 PurchaseOrderNumber 作为 152346 。现在我将152346设置为标题中的变量主体,并将其作为输入发送到名为Ship的脚本。

但是这里我没有得到152346作为我的脚本的价值。它会变为空。

请告诉我如何将152346值设置为标题并将其作为输入传递给我的脚本。

我的脚本以152346作为输入。

1 个答案:

答案 0 :(得分:2)

b2bmbScript不是开箱即用的Apache Camel组件,因此它必须是某种第三方/本土组件。

因此,无论此组件支持采用标头还是诸如此类,完全取决于该组件的实现方式。任何Camel组件都可以访问Camel ExchangeMessage实例中的所有数据,因此可以获取正文,标题等。

所以看看这个组件是如何实现的,它的文档等等。