从上一个结束日期开始间隔安排java批处理作业

时间:2018-01-28 13:42:22

标签: ejb jsr352 java-batch jberet ejbscheduler

我使用jsr-352编写了我的工作并将其部署在wildfly上。如何在最后结束时间之后安排一个工作延迟一段时间,例如下面的时间线=是执行时间而-是延迟时间:

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

注意:最大作业执行次数是一次

1 个答案:

答案 0 :(得分:1)

JBeret ejb调度程序支持重复间隔作业执行,具有固定的间隔持续时间或在作业开始执行后的某个延迟持续时间。目前不支持在作业执行结束后延迟。如果您的作业执行持续时间相对可预测,则可以在作业开始执行后以间隔或延迟对其进行近似。

要通过更好的控制来实现这种作业schedulgin,您可以尝试以下方法:

  • 安排单一作业的作业时间表
  • 在job.xml中配置作业侦听器以监视上述作业执行的结束,并使用短暂的初始延迟来构建下一个单作用作业
  • 具体来说,作业侦听器的afterJob()方法应该能够查找或注入TimerSchedulerBean,这是一个本地单例EJB,并调用其org.jberet.schedule.TimerSchedulerBean#schedule方法。作业监听器负责创建org.jberet.schedule.JobScheduleConfig的实例,在调用ejb业务方法时传递它。作业监听器应该已经拥有所有信息来创建JobScheduleConfig