Spring - 动态添加和删除计划任务

Spring - Dynamically add and remove scheduled task

我正在开发基于 spring 的服务器应用程序。基本上它会在很短的时间内轮询各种体育赛事的分数并保存在数据库中。对于轮询,将有许多(大约 100 个)以固定间隔同时调用不同的 apis,例如一些 api 调用将有 3 秒的间隔,一些有 5 秒等,服务器将继续轮询以频繁的间隔获取最新数据。

将动态添加和删除这些调用。我对spring的使用经验不多。我想我必须使用一些调度程序。任何人都可以指出正确的方向在这种情况下哪种方法或哪种调度程序最好。

您可以为此使用 @Scheduled Spring 注释。请参阅此 link 以获取示例。

本质上你想注入一个调度任务执行器的实例

@Configuration
public class MyApplicationConfiguration {
    @Bean
    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
        ThreadPoolTaskScheduler tpts = new ThreadPoolTaskScheduler();
        // maybe configure it a little?
        return tpts;
    }

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

class MyService {
    @Autowired
    private ThreadPoolTaskScheduler tpts;

    public void doSomething() {
        Runnable task = ...
        tpts.scheduleWithFixedDelay(task, 1000);
    }
}

你可以看到一个reasonable guide here, or the SchedulingTaskExecutor Javadoc and the Spring Task Execution and Scheduling Reference