Как дождаться завершения весеннего задания cron из скрипта ant build - PullRequest
2 голосов
/ 08 февраля 2012

Допустим, у моего веб-приложения есть две весенние задачи cron, которые должны запускаться каждую минуту / час. Прежде чем я заново разверну свое приложение, я не могу просто закрыть его, я должен подождать, пока работа будет завершена правильно. Я могу указать какой-либо флаг в базе данных или где-то еще, чтобы задания перестали работать итеративно - каждую минуту или час - поместили некоторую проверку в функцию задания, чтобы возвращать / ничего не делать при следующем вызове триггера, если такой флаг установлен.

Но как я могу дождаться окончания текущей работы? А как это увидеть по муравью или другому внешнему скрипту - выбрать подходящее время для выключения сервера.

Может быть решение поставить некоторый флаг в базу данных или файл и прочитать его. Но может быть есть какой-то более точный способ - jms или что-то в этом роде?

Ответы [ 2 ]

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

Вместо использования базы данных вы можете использовать JMX. - Но по моему скромному мнению: если вы уже используете базу данных, но еще не используете JMX, то используйте флаг БД или простой файл, чтобы подать таймер на «остановку».

Лучше, чем использовать флаг и проверять для каждого вызова, установлен ли флаг, стреляет shutdown() вниз ThreadPoolTaskSchedule или ThreadPoolTaskExecutor. Но для этого потребуется вторая задача (выполняется каждую минуту или короче), чтобы проверить флаг, а затем завершить работу с планировщиком.

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

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

Если вы используете TaskExecutor для запуска заданий "cron", то вы можете использовать метод, описанный skaffman в в этом ответе , чтобы получить результаты выполнения задачи.Если вам нужен доступ к нему из ant, вы можете использовать поддержку JMS в Spring с ant-jms .

.
...