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");