Camel组件:从Bean动态设置属性

时间:2015-11-19 21:39:20

标签: apache-camel jbossfuse


我在Jboss Fuse BluePrint中定义了一个Camel Route。我需要在运行时从Bean设置一个变量。见这个例子:

<camelContext xmlns="http://camel.apache.org/schema/spring">
     <route id="wsClient">
            <from uri="timer:foo?repeatCount=1" />
            <setBody>
                <simple>Message</simple>
            </setBody>
            <transform>
                  <method bean="myBean" method="transform" />
            </transform>
            <to uri="cxf:bean:MyWebService?defaultOperationName={{operation}}" />
            <to uri="mock:result" />
     </route>
</camelContext>

在这个例子中,我想在bean“myBean”中设置名为“ operation ”的属性。有可能吗? 谢谢!

2 个答案:

答案 0 :(得分:3)

是的,有可能。 首先,从bean设置标头,然后使用http://camel.apache.org/recipient-list.html

我不熟悉Spring DSL,但在Java DSL中它看起来像这样:

.recipientList(simple("cxf:bean:MyWebService?defaultOperationName=${header.operation}"))

答案 1 :(得分:1)

是的,你可以在bean里面做到这一点。无需传递任何特定参数。 Camel可以自动绑定交换,正文等作为方法参数。参考:http://camel.apache.org/bean-binding.html

使用以下代码,您可以设置标题或属性

exchange.getIn().setHeader("HeaderName", "Value");

exchange.setProperty("Key", "Value");