我目前在Apache Camel路由中使用setHeader变量作为XSL文件的输入参数。但是,这不适用于setProperty变量。 Camel不支持吗?
谢谢!
UPDATE -
这是我的路线......
<camel:route>
<camel:from uri="file:/usr/local/jms_support/update"/>
<camel:convertBodyTo type="String" />
<camel:multicast>
<camel:pipeline>
<camel:bean ref="getPidsForUpdate"/>
<camel:setProperty propertyName="work_or_image"><camel:constant>image</camel:constant></camel:setProperty>
<camel:setProperty propertyName="pid"><camel:constant>1234</camel:constant></camel:setProperty>
<camel:setProperty propertyName="work_pid"><camel:constant>1234</camel:constant></camel:setProperty>
<camel:setProperty propertyName="bibid"><camel:constant>1234</camel:constant></camel:setProperty>
</camel:pipeline>
<camel:pipeline>
<camel:to uri="xslt:xsl/test.xsl"/>
<camel:to uri="file:/usr/local/jms_support/update_test"/>
</camel:pipeline>
</camel:multicast>
</camel:route>
答案 0 :(得分:1)
你使用的Camel版本是什么?
Xstl组件将标头和属性设置为参数。您可以在org.apache.camel.builder.xml上启用TRACE日志记录,并查看要添加的参数。
请参阅底部的XsltBuilder和configureTransformer方法的源代码:https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
答案 1 :(得分:0)
我最终将消息内容存储在变量中,并在消息更改后将消息设置回该内容,如此...
<!-- store original content in header variable -->
<camel:setHeader headerName="marc"><camel:simple>${body}</camel:simple></camel:setHeader>
<!-- run some logic, output gets saved as another header variable, message as this point is now that output -->
<camel:bean ref="getPidsForUpdate"/>
<camel:setHeader headerName="pids"><camel:simple>${body}</camel:simple></camel:setHeader>
....根据该输出设置一堆变量,然后
<!-- get original message to run some more logic-->
<camel:setBody><camel:simple>${headers.marc}</camel:simple></camel:setBody>