Apache Camel маршрут завершился рано во время шкалы POD из-за тайм-аута выключения в полете (HPA + параллельная обработкJAVA

Программисты JAVA общаются здесь
Anonymous
Apache Camel маршрут завершился рано во время шкалы POD из-за тайм-аута выключения в полете (HPA + параллельная обработк

Сообщение Anonymous »

Я работаю над приложением Spring Boot на основе Apache Camel, развернутом в Kubernetes, где мы потребляем файлы из местоположения SFTP, обрабатывайте содержимое. Вот упрощенная версия маршрута: < /p>

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

    from("sftp://my-server/path?options...")
.split()
.tokenizeXML("", "")
.streaming()
.parallelProcessing()
.process(myRecordProcessor)
.end();
Мы используем горизонтальный Pod Autoscaling (HPA) в Kubernetes. Время от времени, пока маршрут все еще обрабатывает большой файл, POD прекращается из-за масштабирования. Мы настроили стратегию выключения, используя настройки по умолчанию, предоставленные Apache Camel:
  • timeout: 300 секунд (5 минут)
  • whitdown now at timeout: true
  • /> маршруты выключения в обратном порядке: < /strong> true
    Это значения по умолчанию для по умолчанию chutdownstrategy в версиях верблюда Apache 3.x. < /li>
    < /ul>
    Проблема: < /strong>
    Когда POD завершен (масштабируется по HPA), CAMEL. Если файл все еще обрабатывается:

    Camel дает только 120 секунд
    для завершения всех обменов в полете. Потеря данных , поскольку остальные записи в файле никогда не обрабатываются. Idle Pods и те, которые все еще обрабатывают длинный файл. < /li>
    Маршрут использует .streaming (). ParallelProcessing (), что затрудняет отслеживать индивидуальные записи или контрольно-пропускной пункт. Обмен
  • Избегайте потери данных во время выключения POD
  • Поддержка длительного времени обработки для больших файлов


Подробнее здесь: https://stackoverflow.com/questions/796 ... ight-shutd

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