2015-04-27 2 views
0

У нас есть приложение, которое делает много импорта и экспорта - в основном между CSV-файлами и таблицами базы данных.Эксклюзивные пакетные задания с javax.batch/jsr352

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

Мы смотрели javax.batch. Концептуально он подходит очень хорошо. Но то, что мы действительно не смогли найти, - это возможность как-то управлять «исключительностью» определенных работ, которые мы хотим запустить.

Не могли бы вы предоставить указатель на это? Как реализовать эксклюзивные пакетные задания с javax.batch? Или мы должны реализовать наш собственный JobOperator для этого?

Update

Что я имею в виду «исключительности» является тха способность определить, что некоторые работы не могут быть выполнены параллельно. В самом тривиальном случае это означало бы «выполнить только одно задание во времени». В более сложных случаях более сложная логика типа «задание типа A не может работать с другими заданиями типа A или B, но C в порядке». «Тип задания» - это, например, jobXmlNamehere (независимо от параметров работы).

+0

Можете ли вы описать немного больше, что вы подразумеваете под «исключительностью»? –

+0

@MichaelMinella Привет, Майкл, просмотрите обновление. Я был бы благодарен вам за понимание. – lexicore

ответ

2

JSR-352 (и Spring Batch), как правило, избегают темы оркестровки. Для этого потребуется конкретный подход, который предотвращает присущую им гибкость в пакетных рамках. Из-за этого JobOperator в JSR-352 не имеет понятия о предотвращении запуска одного задания, пока работает другой.

Пока вы можете выполнить это через свой собственный JobOperator, я бы не рекомендовал этот подход. Вместо этого вам было бы лучше перемещать этот слой выше, в тех, кто звонит JobOperator, чтобы логика для такого типа оркестровки была отделена от деталей реализации запуска задания. Например, если вы используете планировщик для запуска заданий, я бы поставил там логику того, какие задания могут выполняться параллельно и какие из них не могут ... не в пользовательском JobOperator.

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