【问题标题】:Spring TaskScheduler does not schedule task immediatellySpring TaskScheduler 不会立即安排任务
【发布时间】: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


【解决方案1】:

原因可能是任务计划程序配置。分配更多线程来处理尽可能多的任务。阅读文档

【讨论】: