routes - Apache Camel 路由将值设置为 setHeader 并将该值作为输入传递给脚本

标签 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 设置为 header 中的变量主体,并将其作为输入发送到名为 Ship 的脚本。

但是我的脚本没有得到 152346 的值。它会变成空。

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

我的脚本将 152346 作为输入。

最佳答案

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

因此,无论该组件支持获取 header 还是其他内容,都完全取决于该组件的实现方式。任何 Camel 组件都可以访问 Camel Exchange 中的所有数据和Message实例,因此可以获取正文、 header 等。

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

关于routes - Apache Camel 路由将值设置为 setHeader 并将该值作为输入传递给脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49532699/

相关文章:

spring - Apache Camel Spring Javaconfig 单元测试 端点上没有可用的消费者

spring - Grails 2.4.2 bean spring bean注入(inject)

c# - 是否可以在 ASP.NET MVC3 中检索某个 Url 字符串的 Controller 实例?

objective-c - 谷歌地图 - 在路上的大概位置

java - 用于处理异步 HTTP 请求/响应的体系结构 : ESB vs Async Http Client library

redis - 使用 camel-redis 设置 redis 键/值

spring - 如何使用 Spring Integration DSL 配置 StepExecutionListener

spring-integration - 文件轮询入站 channel 适配器的 Spring 集成 DSL 示例

javascript - react-router-dom: 无效的 hook 调用,Hooks 只能在函数组件的内部调用

ruby-on-rails - rails : I cant pass a validation error in a redirect