Java 如何在驼峰分割中发生异常时获取聚合交换?
我在camel split()路由中有一个聚合策略 splitMessage方法已将数据拆分为3个请求数据。因此,我命中http目标端点3次 使用聚合策略,我的http响应头2次聚合Java 如何在驼峰分割中发生异常时获取聚合交换?,java,split,apache-camel,Java,Split,Apache Camel,我在camel split()路由中有一个聚合策略 splitMessage方法已将数据拆分为3个请求数据。因此,我命中http目标端点3次 使用聚合策略,我的http响应头2次聚合 public class CustomAggregationStrategy extends AbstractListAggregationStrategy<Exchange> { @Override public void onCompletion(Exchange exchange
public class CustomAggregationStrategy extends AbstractListAggregationStrategy<Exchange> {
@Override
public void onCompletion(Exchange exchange) {
if (exchange != null && isStoreAsBodyOnCompletion()) {
List list = (List) exchange.removeProperty(Exchange.GROUPED_EXCHANGE);
if (list != null) {
exchange.getIn().setBody(list);
}
}
}
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (oldExchange == null) {
oldExchange = new DefaultExchange(newExchange);
}
return super.aggregate(oldExchange, newExchange);
}
@Override
public Exchange getValue(Exchange exchange) {
return exchange;
}
}
公共类CustomAggregationStrategy扩展了AbstractListAggregationStrategy{
@凌驾
完成时的公共作废(交换){
if(exchange!=null&&isStoreAsBodyOnCompletion()){
List List=(List)exchange.removeProperty(exchange.GROUPED\u exchange);
如果(列表!=null){
exchange.getIn().setBody(列表);
}
}
}
@凌驾
公共交换聚合(交换旧交换、交换新交换){
if(oldExchange==null){
oldExchange=新的默认Exchange(新Exchange);
}
返回超级聚合(旧交易所、新交易所);
}
@凌驾
公共交换getValue(交换){
换汇;
}
}
第三次http调用因异常而失败。因此,该控件转到onCompletion方法,但exchange不包含“CamelGroupedExchange”属性
基本上,我希望在有例外的情况下进行前两次交换
如果问题不清楚,请告诉我。这仍然是个谜!
public class CustomAggregationStrategy extends AbstractListAggregationStrategy<Exchange> {
@Override
public void onCompletion(Exchange exchange) {
if (exchange != null && isStoreAsBodyOnCompletion()) {
List list = (List) exchange.removeProperty(Exchange.GROUPED_EXCHANGE);
if (list != null) {
exchange.getIn().setBody(list);
}
}
}
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (oldExchange == null) {
oldExchange = new DefaultExchange(newExchange);
}
return super.aggregate(oldExchange, newExchange);
}
@Override
public Exchange getValue(Exchange exchange) {
return exchange;
}
}