2016-05-09 2 views
0

Когда мы запускаем несколько параллельных заданий с разными параметрами, как мы можем управлять (останавливать, перезапускать) соответствующие задания? Наш внутренний код предоставляет объект jobExecution, но под обложками. JobOperator использует имя задания для получения экземпляра задания.Spring batch jobOperator - как управляются несколько параллельных экземпляров задания из одного и того же файла XML?

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

ответ

1

JobOperator позволит вам получить все выполняемые задания, используя getRunningExecutions(String jobName). Вы должны иметь возможность перебирать этот список, чтобы найти тот, который вам нужен. Затем просто позвоните stop(long executionId) по тому, который вы хотите.

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

+0

Спасибо! Как только у нас появится шанс это доказать, я помету это, как ответ. –

+0

Итак, с каким вариантом вы шли? –

+0

Мы реализовали механизм JobOperator.getRunningExecutions(). Поскольку в кварце запланированы отключения, это позволяет нам остановить/перезапустить работу без изменения самих заданий. –

Смежные вопросы