Обработчик верблюда после выбора запускается до того, как агрегатор внутри выбора () завершит агрегацию - PullRequest
0 голосов
/ 09 апреля 2019

Недавно я увидел неожиданный порядок выполнения процессора при использовании 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.

...