我用jsr-352编写了我的作业,并将其部署在wildfly上。如何在上次结束时间之后安排一个延迟的作业,例如以下时间线,其中=
是执行时间,-
是延迟时间:
===============--=====--========--
注意:最大作业执行次数为 1
JBeret ejb 调度器支持重复间隔作业执行,具有固定的间隔持续时间或在作业执行开始后的特定延迟持续时间。目前不支持作业执行结束后的延迟。如果作业执行持续时间相对可预测,则可以在作业执行开始后使用间隔或延迟来近似
。要通过更精细的控制实现这种作业调度,您可以尝试以下方法:
计划- 单操作作业计划
- 在 job.xml 中配置作业侦听器以监视上述作业执行的结束,并以较短的初始延迟安排下一个单操作作业执行
- 具体来说,作业侦听器的
afterJob()
方法应该能够查找或注入TimerSchedulerBean
,这是一个本地单例 EJB,并调用其org.jberet.schedule.TimerSchedulerBean#schedule
方法。作业侦听器负责创建org.jberet.schedule.JobScheduleConfig
的实例,在调用 ejb 业务方法时传递它。作业侦听器应该已经拥有创建JobScheduleConfig
的所有信息。