Camel'OUT'消息不会从处理器中的'IN'填充

时间:2014-12-09 22:37:20

标签: java apache-camel

试图弄清楚如何将身体从IN消息传播到处理器中的OUT。见下文。请注意,我使用流式缓存,而我的原始输入是一个流。

public void process(Exchange exchange) throws Exception {

    log.debug("In msg:"  + exchange.getIn().getBody(String.class));
    log.debug("Out msg:"  + exchange.getOut().getBody(String.class));

    exchange.setOut(exchange.getIn());

    log.debug("In msg:"  + exchange.getIn().getBody(String.class));
    log.debug("Out msg:"  + exchange.getOut().getBody(String.class));
}

输出结果为:

In msg: "My Payload"
Out msg: null
In msg: (empty string)
Out msg: (empty string)

我的期望是:

In msg: "My Payload"
Out msg: null
In msg: "My Payload"
Out msg: "My Payload"

空字符串来自哪里?

3 个答案:

答案 0 :(得分:2)

试试

 exchange.getOut().setBody(exchange.getIn().getBody());

代替:        exchange.setOut(exchange.getIn());

答案 1 :(得分:1)

Per Claus'引用docs的评论:

  

考虑使用getIn()如上所示,您最常需要更改   现有的IN消息,而不是创建一个全新的OUT消息。和   因此,直接调整IN消息通常更容易。

答案 2 :(得分:0)


我已在本地测试了相同的代码,并且其工作方式如下所示。

在消息中:"我的有效负载"
输出消息:null
在msg:"我的有效载荷"
输出消息:"我的有效负载"

我没有得到任何"空字符串"在控制台中。