Как обрабатывать завершениеSize и завершениеTimeout, когда размер списка является переменным?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как обрабатывать завершениеSize и завершениеTimeout, когда размер списка является переменным?

Сообщение Anonymous »

Я пытаюсь выполнить следующие шаги на своем маршруте:
  • Загрузить данные из источника данных JPA.
  • Преобразуйте элементы в другой тип.
  • Возьмите пакеты по 20 элементов и передайте их по другому маршруту.
  • В конце концов выполните одну последнюю операцию. элементов обрабатываются.
Вот важные участки маршрута:

Код: Выделить всё

AggregationStrategy agg = AggregationStrategies.flexible(NewClass.class)
.accumulateInCollection(ArrayList.class)
.pick(body());

.to("jpa://")
.split(body())
.convertBodyTo(NewClass.class)

.aggregate(agg).constant(true)
.completionSize(20)
.completionTimeout(1000L)
.to("direct:doSomethingWithBatch")
.end()

// final step - need to do this only once
.bean(MyProcessor.class)

.end();
Проблема, с которой я столкнулся, заключается в том, что с обработкой все в порядке до окончательного пакета (время ожидания истекло). Например, если у меня 42 элемента, порядок обработки будет следующим:
  • Обработать пакет из 20 элементов -> doSomethingWithBatch
  • Обработка следующих 20 -> doSomethingWithBatch
  • вызывает процесс MyProcessor
  • Обработка оставшихся 2 элементов по тайм-ауту
Я хочу, чтобы шаг №3 выполнялся после завершения всей обработки. Даже если я отключу параллельную обработку, она все равно будет обрабатывать оставшиеся элементы тайм-аута после MyProcessor. Будем очень признательны за любые рекомендации!

Подробнее здесь: https://stackoverflow.com/questions/793 ... list-is-va
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»