0

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

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

注意:作业执行的最大数量为 1

4

1 回答 1

1

JBeret ejb 调度程序支持重复间隔作业执行,在作业执行开始后具有固定的间隔持续时间或一定的延迟持续时间。当前不支持作业执行结束后的延迟。如果您的作业执行持续时间相对可预测,您可以在作业执行开始后使用间隔或延迟来近似它。

为了更好地控制这种工作调度,您可以尝试以下方法:

  • 安排单动作作业计划
  • 在job.xml中配置一个作业监听器来监听上述作业执行的结束,并以很短的初始延迟调度下一个单动作作业的执行
  • 具体来说,作业侦听器的afterJob()方法应该能够查找或注入TimerSchedulerBean本地单例 EJB,并调用其org.jberet.schedule.TimerSchedulerBean#schedule方法。作业侦听器负责创建 的实例org.jberet.schedule.JobScheduleConfig,并在调用 ejb 业务方法时传递它。作业侦听器应该已经拥有要创建的所有信息JobScheduleConfig
于 2018-01-28T15:28:58.033 回答