首页 > 其他分享 >springboot中2种配置定时任务

springboot中2种配置定时任务

时间:2023-08-24 15:14:20浏览次数:47  
标签:10 30 15 springboot 触发 配置 cron 任务 定时

1、@Schedule

用@Schedule注解,直接放到方法上就可以生效,代码如下:

    @Scheduled(cron = "0 */5 * * * ?")
    public void dealResult() {
        log.info("开始执行定时任务......");
        DefaultProfile profile = DefaultProfile.getProfile(
                rdsConfig.getRegionId(),            // 您的地域ID
                rdsConfig.getAccessKeyId(),     // 您的AccessKey ID
                rdsConfig.getSecret());// 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        for (String dbInstanceId : rdsConfig.getDbInstanceIds()) {
            singleRdsResponse(dbInstanceId, client);
        }
    }

2、动态配置定时任务

配置文件将cron配置到配置文件中,可随时修改,代码如下:

@Slf4j
@Data
@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
    @Value("${schedule.cron}")
    private String cron;

    @Autowired
    private RdsService rdsService;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        // 动态使用cron表达式设置循环间隔
        taskRegistrar.addTriggerTask(() -> rdsService.dealResult(), triggerContext -> {
            // 使用CronTrigger触发器,可动态修改cron表达式来操作循环规则
            CronTrigger cronTrigger = new CronTrigger(cron);
            Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);
            return nextExecutionTime;
        });
    }
}

其中:
rdsService.dealResult();是要定时执行的方法
@Value(“${schedule.cron}”)private String cron; 将cron配置到了yml文件中,如下所示:

schedule:
  cron: 0 */5 * * * ?

3、开启定时任务

只需要添加注解:@EnableScheduling;这个注解可添加到启动类、配置文件中,也就是可以添加到任意一个@Component上都会生效,如下所示:

@EnableScheduling
@SpringBootApplication
public class PerformanceMonitoringApplication {

    public static void main(String[] args) {
        SpringApplication.run(PerformanceMonitoringApplication.class, args);
    }

}

4、cron配置

参考如下:

 */5 * * * * ? 每隔5秒执行一次
 0 */1 * * * ? 每隔1分钟执行一次
 0 0 5-15 * * ? 每天5-15点整点触发
 0 0/3 * * * ? 每三分钟触发一次
 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发 
 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 
 
 0 0 12 ? * WED 表示每个星期三中午12点
 0 0 17 ? * TUES,THUR,SAT 每周二、四、六下午五点
 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发 
 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
 0 0 23 L * ? 每月最后一天23点执行一次
 0 15 10 L * ? 每月最后一日的上午10:15触发 
 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 
 0 15 10 * * ? 2005 2005年的每天上午10:15触发 
 0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发 
 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发


"30 * * * * ?" 每半分钟触发任务
"30 10 * * * ?" 每小时的10分30秒触发任务
"30 10 1 * * ?" 每天1点10分30秒触发任务
"30 10 1 20 * ?" 每月20号1点10分30秒触发任务
"30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务
"30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务
"30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务
"30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务
"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务
"15-45 * * * * ?" 15到45秒内,每秒都触发任务
"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次
"15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
"0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次
"0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务
"0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务
"0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务
"0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务
"0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务

 

标签:10,30,15,springboot,触发,配置,cron,任务,定时
From: https://www.cnblogs.com/windok/p/17654165.html

相关文章

  • 【知识整理】Springboot启动扩展点
    SpringBoot启动扩展点整理1.前言​ 在Springboot服务启动阶段,Springboot提供了许多扩展点。在实际的业务开发过程中,部分特殊的业务需求需要再Springboot服务启动过程中动态的加载配置或者执行业务处理,特此将常用的Springboot启动扩展点做一个简单的整理。2.准备阶段2.1Env......
  • 直播系统开发,springboot指定时间触发定时任务
    直播系统开发,springboot指定时间触发定时任务新建测试Demo类执行定时任务 packagecom.task.zhixingshijian;importjava.time.LocalDateTime;importjava.time.temporal.ChronoField;importjava.util.*;/** *@authorwuzhenyong *ClassName:TaskDemo.java *date:2022-......
  • 直播商城源码,JS Date配置日期格式化
    直播商城源码,JSDate配置日期格式化引入jsDate配置化diamante Date.prototype.format=function(fmt){  varo={    "M+":this.getMonth()+1,         //月份    "d+":this.getDate(),          //日  ......
  • 【STM32】4_0 基础定时器
    基础定时器TIME6和TIME7基本定时器•16位计数器(Counter):基础定时器内部有一个16位的自动增减计数器。计数器可以通过软件或外部触发递增。•时钟源(ClockSource):基础定时器可以使用不同的时钟源作为计数器的输入时钟。通常,它可以选择使用内部时钟(如系统时钟)或外部时钟(如外部......
  • 【HDP】jupyter配置pyspark
    source/usr/hdp/3.3.1.0-002/spark2/bin/load-spark-env.shnohupjupyternotebook--no-browser--port18888--ip0.0.0.0--allow-root--NotebookApp.token=root>jupyter.log2>&1& 关闭INFO级别日志$SPARK_HOME/conf/log4j.propertieslog4j.rootCate......
  • 【STM32】4_0 基础定时器
    基础定时器TIME6和TIME7基本定时器•16位计数器(Counter):基础定时器内部有一个16位的自动增减计数器。计数器可以通过软件或外部触发递增。•时钟源(ClockSource):基础定时器可以使用不同的时钟源作为计数器的输入时钟。通常,它可以选择使用内部时钟(如系统时钟)或外部时钟(如外部......
  • 配置application.yml踩的坑
    spring:application:name:user-centerdatasource:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/schedulingusername:rootpassword:123456server:port:8080mybatis-plus:configurati......
  • WinRM服务应用及配置说明
    一、什么是winRM服务1.1、winRM服务介绍Windows远程管理(WinRM)服务是WindowsServer2003R2以上版本中一种新式的方便远程管理的服务。通过WinRM服务,便于在日常工作中远程管理服务器,或通过脚本同时管理多台服务器,来提高工作效率。我们在运维Windows服务器时,通常是用RDP协议来访......
  • Mysql 定时备份数据库脚本
    Mysql定时备份数据库;并且删除X天前的备份数据;1.  创建数据目录mkdirdatacd/data2.  编写脚本文件    vim  backup.sh#!/bin/bash#日期dd=`date+%Y-%m-%d-%H-%M-%S`#保存备份个数,备份2天数据backup_clean_day=2#用户名username=root#密......
  • Nginx-配置WebSocket反向代理
    客户环境因开放端口有限,部署Portainer后默认端口无法访问,故使用nginx做转发,按照正常http协议配置nginx,启动后发现portainer默认的进入容器的功能无法使用,排查后发现报错如下。错误信息为websocket连接问题,需要更改nginx配置为websocket。仅修改http块中的内容即可。map$http_......