ПриветSpring Batch архитектура
Я новичок в Spring Batch мире и последние дни я провел время на просмотр видео YouTube и Майкл Minella, прочитайте некоторые документы и успешно запустить некоторые демо-проекты, которые я нашел в Интернете. Я думаю, что Spring Batch - горячий кандидат на наши нужды. Но вот наш рассказ.
Я работаю в компании, которая разработала свои собственные схемы планирования и пакетной обработки более десяти лет назад для своего бизнес-отдела. Рамка способна запускать обработанные БД процессы, функции БД и динамические SQL. Излишне говорить, что это очень сложно поддерживать, поскольку слишком много людей с различными навыками развития сделали кодирование, и они больше не работают здесь. Наша структура может обрабатывать задания и шаги для последовательного запуска, а также async (как Spring Batch). У нас также есть репозиторий заданий, в котором хранятся все определения заданий (пользователи создают новые задания через графический интерфейс), экземпляры заданий с его контекстом (в случае, если сервер опускается, когда сервер работает, он возобновит выполнение задания). Мои вопросы следующие:
- Можем ли мы создавать новые рабочие места Spring Batch динамически (либо с помощью кода XML-ог) и через стандартные интерфейсы SB хранить их в JobRepository БД?
- Сегодня, в определенный период времени, у нас есть до сотни рабочих заданий одновременно. Они также повторно используют пул соединений в БД. Older Spring Batch ref documentation утверждает, что JobFactory создаст новый ApplicationContext для каждого выполнения задания. Как мы можем добиться повторного использования пулов соединений, если это имеет место в Spring Batch.
- Я знаю, что есть поддержка для продолжения неудачных шагов, но что, если сервер/приложение опустится, смогу ли я перезапустить свое приложение и получить экземпляр задания с его контекстом из JobRepository, чтобы продолжить с отказавшего шага?
Может ли «step1.1» в «job1» зависеть от «шага 2.1» от «job2» в течение последнего часа? В таких сценариях я могу использовать прослушиватель шагов на «step1.1», чтобы выполнить это?
Сердечные приветы
Toto
Thx для ответов и советов. Просто быстрый вопрос о продолжении, это нормально, чтобы выполнить сотню исполнений одновременно, т.е. имея так много ApplicationContexts (никогда не работали с более чем одним за раз) относительно производительности? – BTalker
В одном JVM или несколько? –
Одноместный JVM. Еще одна вещь, которую я хотел спросить. Выполняет ли Spring Batch задание async по умолчанию? Я вижу это происходит, когда я использую org.springframework.core.task.SimpleAsyncTaskExecutor, напр: '<боб ID = "jobLauncher" \t класс = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> \t \t <свойство имя = "jobRepository" исх = "jobRepository" /> \t \t <имя свойства = "taskExecutor"> \t \t <боб класс = "org.springframework.core.task.SimpleAsyncTaskExecutor" /> \t \t ' – BTalker