【发布时间】:2023-02-02 23:09:27
【问题描述】:
我想执行同一个任务几次,但似乎我的代码的每次下一次调用都不会导致我的任务立即执行,例如它在一分钟后执行。
由于用户必须手动安排任务,我使用ScheduledTaskRegistrar.TaskScheduler。
taskRegistrar.getScheduler().schedule(myTask, new Date());
可能是什么原因?用户在我的前端应用程序上单击了两次调度按钮,后端按预期调用了上述调度方法两次。我的任务第一次执行是立即的,第二次在两分钟后运行。
更新:taskregistrar 配置,也许我根本没有配置它。我的任务被添加为应用程序部署的 cron 任务。但如果用户想要触发它们,它们也必须可以手动运行。以下或多或少是整个逻辑:
public class ScheduleTaskService implements SchedulingConfigurer {
@Autowired
private List< MyTask> taskList;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
this.taskRegistrar = taskRegistrar;
taskList.stream().filter(MyTask::isOn).forEach(this::addTaskToScheduler);
}
public void addTaskToScheduler(GwoTask task) {
taskRegistrar.addCronTask(task, task.getCronExpression());
}
【问题讨论】:
-
你如何配置
ScheduledTaskRegistrarbean? -
我更新了代码 sn-p。我应该添加一些配置吗?
标签: java spring scheduled-tasks quartz-scheduler quartz