Можно ли запустить задание cron в веб-приложении?
-
19-09-2019 - |
Вопрос
В веб-приложении Java (сервлеты/spring mvc), используя tomcat, можно ли запустить службу типа задания cron?
напримеркаждые 15 минут очищайте базу данных журналов.
Можете ли вы сделать это независимо от контейнера или его нужно запускать с помощью Tomcat или другого контейнера?
Укажите, гарантированно ли этот метод запускается в определенное время или метод запускается каждые 15 минут, но может быть сброшен и т. д.если приложение перезапускается (так в .net, если использовать таймеры)
Решение
Как документировано в Глава 23.Планирование и пул потоков, Spring поддерживает планирование через классы интеграции для Timer
и Кварцевый планировщик (http://www.quartz-scheduler.org/).Для простых нужд я бы рекомендовал использовать JDK. Timer
.
Обратите внимание, что планировщики Java обычно используются для запуска Java. рабочие места, ориентированные на бизнес.Для задач системного администратора (например, в приведенном вами примере) вам действительно следует предпочесть cron и традиционные инструменты администрирования (bash и т. д.).
Другие советы
Если вы используете Spring, вы можете использовать встроенные хуки Quartz или Timer.Видеть http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.html
Это будет зависеть от контейнера.Вы можете сделать это на Java с помощью Кварц или просто использовать параллельные утилиты планирования Java (ScheduledExecutorService
) или как задание cron на уровне ОС.
Каждые 15 минут кажутся экстремальными.Обычно я бы также советовал вам обрезать/удалять только файлы журналов, в которые больше не ведется запись (и они обычно переносятся на ночь).
Задания ориентированы на пакетную обработку.Либо с помощью ручного триггера, либо в стиле cron (как вам кажется).
Я все еще не понимаю, какова связь между веб-приложением и работой в стиле cron?Единственный вариант использования веб-приложения, о котором я мог подумать, - это то, что вы хотите иметь конечную точку HTTP для запуска задания (но это противоречит вашему утверждению о том, что это «стиль cron»).
Обычно используйте специальную структуру, которая решает «пакетные задания» в проблемной области.Могу порекомендовать кварц.