对Camel聚合拆分的最后一个索引执行操作

时间:2019-11-05 16:02:40

标签: apache-camel dsl

目的是在达到聚合的最后一个索引后,从EDI850Processor中清除类级别的属性。但是,当我们到达split的最后一个索引时,没有可用的属性可以精确地找到。

.split().jsonpath("$['ALL']").streaming().aggregate(AggregationStrategies.groupedExchange())               
    .constant("true")
    .completionSize(20)
    .completionTimeout(500)
    .bean(EDI850Processor.class, "process(*)")
    .marshal("edi850").id("marshal-edi850")
    // Do some final action if its last index of the split 
    .choice() 
    .when(simple("${property.CamelSplitComplete} == 'true'")) 
    .bean(EDI850Processor.class, "clear(*)")

可以交换的属性:

{CamelGroupedExchange=List<Exchange>(30 elements),
 CamelAggregatedCompletedBy=size, 
 CamelMessageHistory=[DefaultMessageHistory[routeId=handle-EDI-processing, node=setHeader9], DefaultMessageHistory[routeId=handle-EDI-processing, node=bean5]], 
 CamelExternalRedelivered=false,
 CamelAggregatedCorrelationKey=true, 
 CamelAggregatedSize=30, 
 CamelCreatedTimestamp=Tue Nov 05 20:45:03 IST 2019}

哪个属性可以识别最后一个索引?

1 个答案:

答案 0 :(得分:0)

您可以在拆分后立即将EDI850Processor bean放入步骤中。然后,在完成所有拆分/聚合处理之后将调用它。