Запланировать пакетное задание Java с интервалом от последней даты окончания

Я написал свою работу, используя jsr-352, и развернул ее на wildfly. Как я могу запланировать одно задание с некоторой задержкой после последнего времени окончания, как показано на временной шкале ниже, где = - время выполнения, а - - время задержки:

===============--=====--========--

Примечание: максимальное количество выполняемых заданий - одно.


person mohammad_1m2    schedule 28.01.2018    source источник


Ответы (1)


Планировщик JBeret ejb поддерживает повторяющиеся интервальные выполнения заданий с фиксированной продолжительностью интервала или определенной продолжительностью задержки после начала выполнения задания. Задержка после завершения выполнения задания в настоящее время не поддерживается. Если продолжительность выполнения вашего задания относительно предсказуема, вы можете аппроксимировать ее либо интервалом, либо задержкой после начала выполнения задания.

Чтобы добиться такого рода расписания работ с более точным контролем, вы можете попробовать следующее:

  • составить расписание однократных заданий
  • настроить прослушиватель задания в job.xml, чтобы следить за окончанием выполнения указанного выше задания, и планировать выполнение следующего задания с одним действием с небольшой начальной задержкой
  • в частности, метод afterJob() прослушивателя задания должен иметь возможность искать или внедрять TimerSchedulerBean, который является локальным синглтон-EJB, и вызывать его org.jberet.schedule.TimerSchedulerBean#schedule метод. Слушатель задания отвечает за создание экземпляра org.jberet.schedule.JobScheduleConfig, передавая его при вызове бизнес-метода ejb. У слушателя заданий уже должна быть вся информация для создания JobScheduleConfig.
person cheng    schedule 28.01.2018
comment
Есть ли пример слушателя? вы можете ввести несколько ссылок? - person mohammad_1m2; 28.01.2018
comment
github.com/jberet/jsr352/tree/master/wildfly- jberet-samples / - тестовое приложение для планировщика JBeret ejb. Я исследую, можем ли мы добавить к нему аналогичный вариант использования. - person cheng; 28.01.2018
comment
Подробнее см. Выше JBeret JIRA. Я добавил такой прослушиватель заданий (SchedulingJobListener) в модуль jberet-schedule-executor, и он должен быть официально доступен в следующем выпуске. Если вы хотите попробовать это прямо сейчас, вы можете скопировать этот класс в свое приложение, и он тоже будет работать. - person cheng; 29.01.2018