0

我目前在 Apache Camel 路由中使用 setHeader 变量作为 XSL 文件的输入参数。但是,这不适用于 setProperty 变量。骆驼不支持吗?

谢谢!

更新 -

这是我的路线...

<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>
4

2 回答 2

1

你用什么骆驼版本?

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

于 2012-12-03T08:01:26.340 回答
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>
于 2012-12-05T01:05:35.590 回答