Недавно я увидел неожиданный порядок выполнения процессора при использовании aggregator
внутри блока choice
/ when
.Процессор после блока choice
вызывается до того, как aggregator
завершит агрегирование, когда я ожидал, что он будет выполняться в письменном порядке.
.process { /* start timer */ }
.choice()
.`when`(somePredicate)
.aggregate(constant(true), someAggregationStrategy)
.completionInterval(1000)
.completeAllOnStop()
.log("post-aggregation") // invoked second
.endChoice()
.otherwise()
// ... some other aggregation strategy
.endChoice()
.end()
.process { /* stop timer */ } // invoked first (and the exchange is not an aggregate exchange)
Есть ли способ заблокировать следующие processor
schoice
, пока aggregator
не закончится?Я хочу выполнить некоторую общую логику (остановка таймеров обработки) после завершения choice
, не повторяя ее внутри каждого блока when
.