zoukankan      html  css  js  c++  java
  • spring-boot通过@Scheduled配置定时任务

    串行的定时任务

    @Component
    public class ScheduledTimer {

    private Logger logger = Logger.getLogger(this.getClass());

    /**
    * 定时任务,1分钟执行1次,更新潜在客户超时客户共享状态
    */
    @Scheduled(cron="0 0/1 8-20 * * ?")
    public void executeUpdateCuTask() {
    Thread current = Thread.currentThread();
    logger.info(" 定时任务1:"+current.getId()+ ",name:"+current.getName());
    }

    @Scheduled(cron="0 0/1 8-20 * * ?")
    public void executeGetRepayTask() {
    Thread current = Thread.currentThread();
    logger.info(" 定时任务2:"+current.getId()+ ",name:"+current.getName());
    }


    }

    并行的定时任务需要添加配置文件

    因为spring-boot的目的就是干掉配置文件,我在网上看到的很多都是通过配置文件来实现的,这里通过代码配置实现:

    @Configuration
    public class ScheduleConfig implements SchedulingConfigurer{

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar){
    TaskScheduler taskScheduler = taskScheduler();
    taskRegistrar.setTaskScheduler(taskScheduler);
    }

    @Bean(destroyMethod = "shutdown")
    public ThreadPoolTaskScheduler taskScheduler() {
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.setPoolSize(20);
    scheduler.setThreadNamePrefix("task-");
    scheduler.setAwaitTerminationSeconds(60);
    scheduler.setWaitForTasksToCompleteOnShutdown(true);
    return scheduler;
    }
    }


    网上教程说的需要在启动类上加上@EnableScheduling注解来发现注解@Scheduled的任务并后台执行。
    可能我没有通过启动类是通过外部tomcat启动的项目,所以没有加这个注解也能实现定时任务。
    路过的大侠如果有知道的,多多指教@EnableScheduling注解的作用,谢谢。


  • 相关阅读:
    Unity—Json2
    Unity—Json1
    windows 命令行报错:file(s) not in client view
    winform listbox 使用DrawMode使用OwnerDrawVarialbe或OwnerDrawFixed无水平滚动条
    windows 命令行使用p4
    winform listbox增加鼠标双击事件
    lua5.3+luasocket
    centos 安装glide工具(golang)笔记
    centos 安装golang笔记
    centos安装redis,并设置开机自动启动项
  • 原文地址:https://www.cnblogs.com/yizw/p/7850310.html
Copyright © 2011-2022 走看看