我在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 ”的属性。有可能吗? 谢谢!
答案 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");