Camel 组件:从 Bean 动态设置 属性
Camel Component: setting a Property dynamically from a Bean
我在 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”的 属性。有可能做到吗?
谢谢!
是的,这是可能的。
首先,从 bean 中设置一个 header,然后使用 http://camel.apache.org/recipient-list.html
我不熟悉 Spring DSL,但在 Java DSL 中它看起来像这样:
.recipientList(simple("cxf:bean:MyWebService?defaultOperationName=${header.operation}"))
是的,您可以在 bean 中执行此操作。无需传递任何特定参数。骆驼可以自动绑定交换,body ...等作为方法参数。参考:http://camel.apache.org/bean-binding.html
使用下面的代码,您可以设置 header 或 属性
exchange.getIn().setHeader("HeaderName", "Value");
exchange.setProperty("Key", "Value");
我在 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”的 属性。有可能做到吗? 谢谢!
是的,这是可能的。 首先,从 bean 中设置一个 header,然后使用 http://camel.apache.org/recipient-list.html
我不熟悉 Spring DSL,但在 Java DSL 中它看起来像这样:
.recipientList(simple("cxf:bean:MyWebService?defaultOperationName=${header.operation}"))
是的,您可以在 bean 中执行此操作。无需传递任何特定参数。骆驼可以自动绑定交换,body ...等作为方法参数。参考:http://camel.apache.org/bean-binding.html
使用下面的代码,您可以设置 header 或 属性
exchange.getIn().setHeader("HeaderName", "Value");
exchange.setProperty("Key", "Value");