zoukankan      html  css  js  c++  java
  • spring boot 中使用动态定时任务

    在实际开发过程中,可能需要定时任务在夜间对系统进行维护,但是如果cro表达式需要变更,通常我们都是写在方法上面,无法动态更改,如果需要修改则要修改源码重新打包发布。

    1、新建一个空白的spring boot项目

    2、在启动类上添加@EnableScheduling注解,启用定时任务。

    3、新建定时任务类

     1 @Component
     2 public class TestTask implements SchedulingConfigurer {
     3 
     4     private static final String DEFAULT_CRON = "* * * * * ?";
     5     private String cron = DEFAULT_CRON;
     6 
     7 
     8     @Override
     9     public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    10         Runnable task = new Runnable() {
    11             @Override
    12             public void run() {
    13                 //定时任务执行内容
    14                 System.out.println("hi! this dynamic task");
    15             }
    16         };
    17         Trigger trigger = new Trigger() {
    18             @Override
    19             public Date nextExecutionTime(TriggerContext triggerContext) {
    20                 // 定时任务触发,可修改定时任务的执行周期
    21                 //模拟获取定时任务表达式配置
    22                 String thecron="";
    23                 try {
    24                     RestTemplate restTemplate=new RestTemplate();
    25                     thecron=restTemplate.getForObject("http://localhost:8089/config/getconfig",String.class);
    26 
    27                 }catch (Exception ex)
    28                 {
    29 
    30                 }
    31                 if (StringUtils.isEmpty(thecron)) {
    32                     cron = DEFAULT_CRON;
    33                 }else
    34                 {
    35                     setCron(thecron);
    36                 }
    37                 CronTrigger trigger = new CronTrigger(cron);
    38                 Date nextExecDate = trigger.nextExecutionTime(triggerContext);
    39                 return nextExecDate;
    40             }
    41         };
    42         taskRegistrar.addTriggerTask(task, trigger);
    43     }
    44 
    45     public void setCron(String cron) {
    46         this.cron = cron;
    47     }
    48 }
    动态定时任务实现
  • 相关阅读:
    php实现cookie加密解密
    三个php加密解密算法
    一个经典的PHP加密解密算法
    Webpack 核心模块 tapable 解析(转)
    详解基于vue,vue-router, vuex以及addRoutes进行权限控制
    编写一个插件
    详解css3 pointer-events(阻止hover、active、onclick等触发事件来
    Dockerfile HEALTHCHECK详解
    Dockerfile 指令 WORKDIR介绍
    NPM私有包部署到私有仓库
  • 原文地址:https://www.cnblogs.com/rolayblog/p/11275823.html
Copyright © 2011-2022 走看看