доступ к удаленным пакетным заданиям Spring из админки Spring Batch - PullRequest
1 голос
/ 30 января 2012

Я новичок в весенней партии. Я хочу запускать весенние пакетные задания на сервере a и хочу запускать эти задания с сервера b с помощью весеннего пакетного администрирования. Возможно ли это? Я искал следующие два пути:

1.JMX: я мог бы преобразовывать bean-компоненты Spring в mbeans, но я не могу прочитать их из админки Spring Batch. Можете ли вы рассказать, как читать mbeans из админки Spring Batch и запускать их?

2.common репозиторий: я думаю, что если я использую один и тот же db-репозиторий как для администратора Spring Batch, так и для администратора Spring Batch, то я могу запускать удаленные задания от администратора Spring Batch (с сервера b). Но в файле XML задания в Spring Batch admin, какой должен быть путь к классу для тасклета?

Можете ли вы помочь в вышесказанном или сказать мне, если существует какой-либо новый способ?

Ответы [ 3 ]

1 голос
/ 01 марта 2012

В итоге мы внедрили фреймворк, использующий mq-коммуникацию, чтобы справиться с этим. каждый «пакетный узел» регистрирует себя и любые параметры «пакетного класса», такие как «nodeType = A» или «jobSizeiCanHandle = BIG» (это вымышленные, но вы понимаете, в чем суть). Клиентская консоль считывает эту информацию и запрашивает узлы через MQ для получения списка заданий. Затем он отправляет запросы на задание с параметрами через простой текстовый протокол (формат файла свойств).

command=START_JOB
job=JobABC
param1=x
param2=y

Один из пакетных узлов заберет сообщение и начнет задание, он вернет статус успеха / сбоя таким же образом с сообщением с тем же идентификатором корреляции. так что клиент может показать ответ пользователю.

это позволяет нам делать то, о чем вы говорите, и запускать задания через внешний планировщик (Control-M). Упомянутый выше «nodeType = A» позволяет нам запрашивать отдельные узлы (узлы прослушивают, где «nodeType = A или nodeType = *». Это позволяет командам «ориентироваться» на конкретные узлы, если это необходимо.

Имейте в виду, что это наша собственная консоль, а не консоль администрирования Spring Batch. Так что, возможно, это вам не поможет, но создание простой консоли не займет так много времени с использованием API пакетного режима (4 или 5 осин).

Пакетные узлы также могли запускать простые сервисы, такие как HTTP REST-сервисы или «что угодно», но мы интенсивно используем MQ, и мне понравилась идея отсутствия предварительной регистрации узлов (код фреймворка не знает / не заботится о том, что он находится в контейнер HTTP, поэтому он не может легко зарегистрировать конечную точку). В MQ канал предварительно настроен, и все приложения просто «используют его», так что это кажется проще.

Удачи.

0 голосов
/ 17 декабря 2012

@ chau

Один из способов использовать Spring Batch Admin как есть, но «обнаружить» и «вызвать» удаленные задания - это предоставить свои собственные реализации для org.springframework.batch.admin.service.JobService иorg.springframework.batch.core.launch.JobOperator, который может запрашивать и вызывать задания из удаленного реестра / репозитория заданий.

Пользовательскую реализацию для JobService и JMX с включенным администратором заданий можно найти в: https://github.com/regunathb/Trooper/tree/master/batch-coreas: org.trpr.platform.batch.impl.spring.admin.SimpleJobService и org.trpr.platform.batch.impl.spring.jmx.JobAdministrator

Spring beans XML, использующий эти bean, находится здесь: https://github.com/regunathb/Trooper/blob/master/batch-core/src/main/resources/packaged/common-batch-config.xml

0 голосов
/ 27 февраля 2012

Я пытаюсь сделать то же самое.Но похоже, что для запуска задания непосредственно из админки Spring Batch все ресурсы задания должны быть добавлены в веб-приложение Spring Batch.Можно попробовать спокойную подачу работы с весны MVC

...