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

时间:2014-05-28 11:49:26

标签: java spring parameters apache-camel spring-bean

让我们说我的骆驼路线看起来像这样:

from("direct:myRoute")
        .setHeader("someHeader", simple("some header value"))
        .beanRef("myBean", "beanMethod");

我有一个我cannot change看起来像这样的bean:

public class MyBean {
    public void beanMethod(String headerExpected) {
        // do something with the value here.
    }
}

基本上,我想将 myHoute someHeader 的值传递给 MyBean 中的 beanMethod

知道beanMethod可以接受String,如何从路径中传递标题 someHeader 的值,以便在 beanMethod中接受它作为字符串

2 个答案:

答案 0 :(得分:20)

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

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

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

找到

答案 1 :(得分:0)

答案似乎有点过时了。这是我的做法,现代骆驼方式。您可以使用 @Headers 批注检索 bean 中的标头值,并且您可以通过传递类和方法名称来调用 bean 方法;

路由类

public class MyRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("direct:myRoute")
            .setHeader("myHeader", simple("my header value"))
            .bean(MyBean.class, "handle");
    }

}

Bean 类

public class MyBean {
    
    public static void handle(@Header("myHeader") String headerVal) {
        // do something with header
        System.out.println("myHeader: " + headerVal);
    }

}