Подробности
Постановка задачи
Возможность оптимизировать критически важные для бизнеса задания по обработке файлов.
Подробнее
Пакетные задания планируются в cron как триггер. Некоторые типы заданий могут выполняться одновременно и настроены на одновременное выполнение нескольких заданий одного типа. Принимая во внимание, что некоторые задания из-за транзакционных зависимостей ограничены, чтобы не иметь параллелизма.
Пакетное задание загружает все НОВЫЕ (без истории обработки) файлы из SFTP, размещенного поставщиком услуг, перед началом обработки.
Пошаговый обзор вариантов использования:
- Пакетное задание «MyBatchJob» планируется запускать каждые 1 час.
- При запуске в 10:00 «MyBatchJob» загружает 3 файла в настроенную папку загрузки — FileName: A.csv, B.CSV, C.csv.
- Загрузка завершена, «MyBatchJob» начинает обработку «A.csv».
- В 11:00 триггер «MyBatchJob» не обнаружил НОВЫХ файлов, и триггер завершается со статусом «NO_FILES_TO_PROCESS».
- Несмотря на то, что B.csv и C.csv ожидают обработки, триггер завершился со статусом «NO_FILES_TO_PROCESS».
Кроме того, при любом сбое или остановке задания в папке загрузки останутся необработанные файлы, требующие ручного вмешательства.
Цель
Ограничьте количество файлов, которые могут быть загружены по расписанию задания, и позвольте следующему параллельному заданию запускать новые файлы и, таким образом, оптимизировать их за счет параллельной обработки файлов.
Сведения об изменении/реализации
- Предоставлена новая конфигурация для конкретного задания, чтобы установить максимальное количество файлов, загружаемых для каждого триггера/расписания задания. например: maxFileLimitPerSchedule = 1
- Значение по умолчанию -1 указывает на отсутствие ограничений.
Обязанности
Кодирование, модульное и интеграционное тестирование
Раскрытие информации: после выпуска рабочей версии я установил ограничение и не смог увеличить частоту триггеров заданий в день. Это вызвало отставание, которое позже было обнаружено дежурным инженером и исправлено. К счастью, избыточный процесс пакетного задания практически не повлиял на бизнес, но он съел время инженера по вызову, чтобы найти причину аномалии. Урок получен на горьком опыте!