Camel - 将特定参数从路由传递到泛型bean方法

abb*_*gr8 9 java parameters spring apache-camel spring-bean

假设我有一条看起来像这样的Camel路线:

from("direct:myRoute")
        .setHeader("someHeader", simple("some header value"))
        .beanRef("myBean", "beanMethod");
Run Code Online (Sandbox Code Playgroud)

我有一个豆子,我cannot change看起来像这样:

public class MyBean {
    public void beanMethod(String headerExpected) {
        // do something with the value here.
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想传递的价值someHeadermyRoutebeanMethod为myBean.

知道beanMethod可以接受a String,如何从路由中传递标题someHeader的值,以便在beanMethod中接受它作为String ?

Mat*_*son 21

您可以按照您描述的方式传递参数,如下所示:

from("direct:myRoute")
.setHeader("someHeader", simple("some header value"))
.to("bean:myBean?method=beanMethod(${header.someHeader})")
Run Code Online (Sandbox Code Playgroud)

更多信息,包括其他bean绑定方法,可以在http://camel.apache.org/bean-binding.html找到

  • 方法的返回类型为void,因此bean没有输出.如果您要将其返回类型更改为`String`,那么在调用`.to(..` bean调用后,消息体将是方法调用的输出.那么您将能够执行`setHeader( "anotherHeader",简单( "$ {机构}"))` (2认同)