【发布时间】:2015-01-23 20:14:58
【问题描述】:
这是我的路线:
def.convertBodyTo(String.class).split()
.method(splittingProcessor, "split")
.aggregationStrategy(myAggregationStrategy)
.bean(myProcessor, "aMethod")
.end();
我正在尝试将一个交换发送到两个以上不同的 HTTP 端点。
这是我的聚合策略:
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
Message inMsg = newExchange.getIn();
String body = inMsg.getBody(String.class);
String oldBody= "";
if (oldExchange == null) {
return newExchange;
}
else {
oldBody = oldExchange.getIn().getBody(String.class);
oldExchange.getIn().setBody(oldBody + " "+body);
return oldExchange;
}
}
但是
body 总是等于 "" 而 inMsg 是 "[Body is instance of java.io.InputStream]"
convertBodyTo(String.class) 也不起作用(至少我使用它的方式)。
我做错了什么?
PS。路由上的 streamCaching() 或上下文上的 setStreamCache(true) 也不起作用。
编辑 1:
骆驼版:2.12.13
在一个方法中,我使用 ProducerTemplate 将交换发送到 HTTP 端点:
exchange = producerTemplate.send(uri, exchange);
然后我对交换体进行一些处理。
我注意到,如果我使用直接组件,同样的事情会起作用。
【问题讨论】:
-
你使用什么版本的骆驼?,你在你的myProcessor的aMethod中做了什么
-
请看我的编辑#1。
标签: java apache split apache-camel aggregate