Apache Camel - java DSL - 将body转换为其中一个字段

时间:2015-06-11 08:41:18

标签: apache-camel

首先,我对Camel很新,所以如果我在这里尝试做什么(或如何)是愚蠢的,请告诉我。

CODE:

from("direct:one")
        .to("mock:two")
        .process(new Processor(){ 
                @Override
                public void process(Exchange exchange)throws Exception{
                        MyCustomObject obj = exchange.getIn().getBody(MyCustomObject.class);
                    exchange.getOut().setBody(obj.getOneOfTheFields());
                }
        })
        .to("mock:three");

问题:

此处理器将对象转换为其中一个字段。我知道我可以用简单的表达式替换它,但这需要我将'oneOfTheFields'放在一个字符串中,我不想这样做。

是否只有使用java代码执行此操作的较短方法?

2 个答案:

答案 0 :(得分:2)

使用setBody和Camel simple

可以轻松实现这一目标
from("direct:one")
  .to("mock:two")
  .setBody(simple("${body.fieldName}"))
  .to("mock:three");

您指定字段的名称,Camel将使用标准访问器机制来适当地设置正文。

答案 1 :(得分:1)

你能不能简单地这样做:

from("direct:one")
    .to("mock:two")
    .setBody(body().getOneOfTheFields())
    .to("mock:three");

让我知道这是否有效。