2015-03-17 2 views
1

Мне интересно, есть ли функция/метод для создания заданий, которые запускаются на случайных времени. Под этим я подразумеваю, что если я установил график cron, который будет запускаться каждый понедельник в 10.00 и с учетом интервала времени, скажем, 30 минут, триггер всегда будет исчезать с 9.30 ~ 10.30. Например, это график cron.Quartz Scheduler Cron Triggers

schedule.setCronSchedule("0 0 10 ? * MON"); 
trigger = newTrigger() 
         .withIdentity(triggerId) 
         .startNow() // <~~~~~~~~~~~~~~~ ??? 
         .withDescription(schedule.getCronSchedule()) 
         .withSchedule(cronSchedule(schedule.getCronSchedule())).build(); 

Если у меня есть переменная с определенным диапазоном в минутах, я могу настроить ее на случайное срабатывание? И под этим я имею в виду не просто взять строку расписания cron и ее реконфигурировать, но использовать метод для запуска события каждый раз, основываясь на случайном диапазоне, поэтому первый понедельник может быть запущен в 10.01 секунд понедельника, может быть запущен в 9.46 и т. Д.

Заранее спасибо.

+1

Как насчет того, чтобы установить расписание cron на 9:30, а затем ваша задача подождать случайное число секунд (0-3600), прежде чем оно это сделает? Такая рандомизация действительно не является частью cron. – dcsohl

+0

и как это можно применить к java вместо bash? Я видел документацию о кварце, я не видел никакого метода сна/ожидания – bill

+0

Это не часть кварца; он встроен в язык Java! Используйте [Таймер] (https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html) или [ScheduledExecutorService] (https://docs.oracle.com/javase/ 7/документы/API/Java/Util/параллельное/ScheduledExecutorService.html). – dcsohl

ответ

2

Чтобы запустить расписание на некоторое время между 1:00 утра и 1:30 утра каждый день, вы можете попробовать это:

schedule.setCronSchedule(String.format("0 %d 1am * * ?", random.nextInt(30))); 

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

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