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

时间:2017-10-16 12:48:22

标签: java spring spring-scheduled

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

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

2 个答案:

答案 0 :(得分:4)

实质上,您希望注入一个调度任务执行器的实例

@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 hereSchedulingTaskExecutor JavadocSpring Task Execution and Scheduling Reference

答案 1 :(得分:1)

您可以使用@Scheduled Spring Annotation。有关示例,请参阅此link