让我们说我的骆驼路线看起来像这样:
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中接受它作为字符串
答案 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");
}
}
public class MyBean {
public static void handle(@Header("myHeader") String headerVal) {
// do something with header
System.out.println("myHeader: " + headerVal);
}
}