如何在骆驼路线中访问身体/交换

时间:2014-12-16 17:52:13

标签: apache-camel

我正在尝试将骆驼路线中的交换或身体记录为:

<log message="body:${body}"/>

这打印空白即。 &#34;身体:&#34;。但是,通过将参数传递为:

,可以在同一路径中调用某些处理器
<bean id="userBean" method="findSomeUser(${body.getUserId})"/>

如果想看到交换内容,如何从骆驼路线记录交换/身体?

3 个答案:

答案 0 :(得分:0)

你使用的表达方式是正确的,但那时你的身体是空的。尝试从此路线中删除setBody部分,您将获得相同的结果。

 <route >
    <from uri="timer://foo?fixedRate=true&amp;period=5000"/>
    <setBody>
          <constant>MESSAGE</constant>
     </setBody>
    <log message="body:${body}"/>
 </route>

答案 1 :(得分:0)

日志消息中的表达式$ {body}是正确的,你的身体可能是空的,因此它被打印出来。尝试使用setBody参数将正文设置为某个值并尝试打印正文。

答案 2 :(得分:0)

如果您使用的是Java DSL,这就是打印邮件正文的方式;

from("file://xml/inbox")
    .log("${body}");

如果您还想编辑或使用它,可以在Camel Processor方法中使用process()实现,如下所示,这样您就可以通过交换对象;

from("file://xml/inbox")
    .log("${body}")
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
            String myBody = exchange.getIn().getBody();

            System.out.println("This is my body: " + myBody);
        }
    })
    .log(LoggingLevel.INFO, "Processed");