Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在驼峰分割中发生异常时获取聚合交换?_Java_Split_Apache Camel - Fatal编程技术网

Java 如何在驼峰分割中发生异常时获取聚合交换?

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

我在camel split()路由中有一个聚合策略

splitMessage方法已将数据拆分为3个请求数据。因此,我命中http目标端点3次

使用聚合策略,我的http响应头2次聚合

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;
    }

}