试图弄清楚如何将身体从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"
空字符串来自哪里?
答案 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:"我的有效载荷"
输出消息:"我的有效负载"
。
我没有得到任何"空字符串"在控制台中。