Spring Batch Admin: планирование новых заданий через веб-интерфейс

Вопрос новичка по Sprint Batch Admin.

Мое требование состоит в том, что пользователь должен иметь возможность планировать новые задания (передавая некоторые параметры для функциональности задания) через веб-интерфейс. Эти задания должны быть постоянными, повторяться и могут быть отменены или удалены. Кроме того, отчет может быть сгенерирован для последних заданий запуска и для перечисления всех существующих заданий с датами их следующего запуска.

Возможно, мое самое важное требование заключается в том, что это должно быть возможно «на лету», не требуя повторного развертывания веб-приложения или перезапуска сервера.

Можно ли это сделать с помощью Spring Batch Admin (я вижу, что в руководстве говорится о загрузке XML для добавления задания, но это кажется утомительным, если есть API, почему бы нам не создать задание на лету через пакетную службу? Веб-интерфейс администратора)? Или JDK Timer или Quartz поддерживают это?


person Dchucks    schedule 06.04.2012    source источник


Ответы (3)


После создания задания его нельзя удалить, но оно можно остановить. Разрешить удаление из БД — рискованная операция, так как Spring Batch мог уже начать выполнение задания, но БД еще не обновилась. Если кто-то удаляет работу в этот момент, у вас есть несогласованность.

Планирование нового задания описано в разделе Запуск задания. Невозможно создавать новые типы заданий, поскольку задания обычно могут иметь сложную конфигурацию, которая анализируется только один раз при загрузке Spring Context.

person dma_k    schedule 06.04.2012
comment
Спасибо. Я хочу определить, возможно ли планировать задания через веб-интерфейс и поддерживает ли Spring Batch или JDK Timer или Quartz Scheduler. До сих пор я видел, что в веб-приложении все они ожидают, что задания будут настроены заранее, и потребуют повторного развертывания веб-приложения, а не добавления задания на лету. - person Dchucks; 06.04.2012
comment
Можно запланировать (= запустить) новый экземпляр задания. Он будет запускаться исполнителем задачи, который может быть асинхронным (вы должны указать это в конфигурации Spring). Quartz используется для запуска заданий по расписанию, обычно вам не нужна консоль администратора Spring для их запуска, но, вероятно, для просмотра результатов выполнения. Задание должно быть настроено заранее в отношении того, что должно быть сделано с данными (чтение, фрагментация, изменение, запись), но фактические данные (файл, URL-адрес и т. д.) могут быть переданы через параметры. Конечно, можно использовать параметры для настройки самой обработки, это рабочая задача интерпретировать значение параметров. - person dma_k; 06.04.2012
comment
Спасибо еще раз! Ваш ответ помогает мне понять, что в конечном итоге нам понадобится Quartz или Cron для запуска заданий в соответствии с расписанием, а Spring Batch позаботится о фактическом процессе выполнения. Не знаете ли вы, можем ли мы планировать задания на лету через графический интерфейс для Quartz? пока я понял, что вам все равно нужно его предварительно настроить с помощью, скажем, файла свойств. - person Dchucks; 07.04.2012
comment
Хорошо, получил некоторую подсказку в этой теме stackoverflow.com/questions/1267737/frontend-for-quartz - person Dchucks; 07.04.2012

Динамическое развертывание (на лету) заданий и конфигураций, не требующее перезагрузки сервера, — это функция, которую мы реализовали в профиле Trooper Batch — это не совсем администрация Spring Batch, но основанная на ней. Вы продолжаете писать свои задания, используя пакет Spring, просто меняется контейнер в Trooper, для которого вы будете использовать его среду выполнения профиля Batch. Скриншоты и функции здесь: https://github.com/regunathb/Trooper/wiki/Writing-Batch-jobs-in-Trooper

person Regunath B    schedule 12.02.2013

Я думаю, что мы можем развернуть пакетное задание каждой весны с помощью SBA. Я имею в виду, что каждое пакетное задание будет скомпилировано как военный файл. Мы развертываем их вместе в server. Таким образом, у нас есть следующие URL-адреса для просмотра каждого задания:

h t t p://bactchjobserver/job1

ч т т р://bactchjobserver/job2

ч т т р://bactchjobserver/job3

ч т т р://bactchjobserver/job4

Но недостатком является то, что каждая военная заливка обязательно содержит файлы lib, что делает каждый военный файл размером около 10 МБ.

В то же время я попытался вручную добавить new-job.xml в war-file\WEB-INF\classes\META-INF\spring\batch\jobs, а new-job.jar в war-file\WEB-INF. \lib без остановки JBoss. Оно работает. Новое задание можно отобразить в пользовательском интерфейсе SBA и запустить.

Но, очевидно, это потребовало бы значительного обслуживания и устранения неполадок. Это не реализуемо.

person peng li    schedule 09.04.2015