有没有办法在不同的环境和计划中配置特定的计划任务?例如,相同的计划任务'MyTask‘应该在集成和生产中运行。在生产环境中,“MyTask”必须每24小时运行一次,而在集成环境中,“MyTask”必须完全不运行。目前,我们关注的是原生JavaEE7调度机制。Spring、Quartz是额外的框架/库,我们不想使用它们(如果可能)。
发布于 2018-05-28 23:11:41
发布于 2018-07-27 06:24:09
在Java中有几种创建计划任务的方法。我认为更适合您的是使用ManagedScheduledExecutorService.
@ApplicationScoped
public class PeriodicTask {
@Resource
ManagedScheduledExecutorService mses;
@Inject
@Config("period")
private int period;
public void startJobs() {
mses.scheduleAtFixedRate(this::task, 0, period, TimeUnit.MINUTES);
}
private void task() {
...
}
...
}这样,例如,您可以根据运行环境注入配置值period。如果您不需要为特定环境调度任务,可以使用另一个配置参数来避免调用scheduleAtFixedRate方法。
唯一要做的事就是调用startJobs方法。
https://stackoverflow.com/questions/50568041
复制相似问题