有没有办法从bean设置消息头?

时间:2014-11-13 22:01:29

标签: apache-camel

我有一个简单的驼峰路线我需要修改。路线看起来像这样:

from(source.uri)
    .unmarshal()
    .bean(TransformMessageBean.class, "SomeMethod")
    .to(destination.uri)

我想在解组后添加另一个bean方法调用,设置标题值而不中断当前数据流。有谁知道这样做的方法?我在apache的文档中读到,在出站消息体中设置了bean的返回值。有没有办法将其更改为标题?

提前致谢!

3 个答案:

答案 0 :(得分:9)

当然!其中一个选项是

.setHeader("headerName").method(beanInstance, "methodToGetHeaderValue")

使用这种方法,提供的bean实例上的方法(比如methodToGetHeaderValue)将返回一个值,该值将成为标题的值。

有许多选择。您可以使用或不使用方法名称将其称为with a bean instancea bean class(如您的示例中所示),甚至是a bean name

答案 1 :(得分:4)

在Spring XML DSL中,它就像

 <setHeader headerName="headerName">
      <method bean="mybean" method="mymethod" />                
</setHeader>

答案 2 :(得分:1)

XML的另一种方式:

<setHeader name="headerName"> 
    <simple>${bean:yourBean.getMethod}</simple>           
</setHeader>