2014-09-19 2 views
1

Наша команда в настоящее время разрабатывает Java-приложение, которое будет иметь много потоков обработки, которые постоянно выполняются (выполнение таких операций, как опрос из очереди).Когда использовать Cron Job vs. ScheduledExecutorService

В связи с этим приложением существует ряд задач, которые должны выполняться в определенные заранее определенные периоды времени (один раз в день, каждые шесть часов и т. Д.). Некоторые члены нашей команды считают, что было бы лучше выполнить эти задачи как автономные процессы через cron, в то время как другие считают, что было бы лучше просто включить их в текущее приложение, запланированное через Java ScheduledExecutorService. Существует ли наилучшая практика, когда использовать cron против внутреннего ScheduledExecutorService, или это просто вопрос предпочтения?

ответ

2

Преимущество использования ScheduledExecutorService заключается в том, что вы работаете со 100% -ной java, и, следовательно, если вы хотите обновить свой сервер или изменить свой компьютер по какой-то причине, вам не нужно повторно настраивать работу cron. Кроме того, ScheduleExceutorService также позволяет использовать Callable, поэтому вы можете возвращать некоторые результаты и обрабатывать их в java.

1

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

Недостатки в том, что вам либо нужен интерфейс в приложении, который может выполнять задание cron (например, REST-сервис), либо cron запускает вторую виртуальную машину, работающую в параллельно вашему приложению во время выполнения задания.

В настоящее время мы переходим от внутреннего планирования на основе кварца к подходу cron/REST.

0

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