Springboot集成任务调度实现过程

一 任务调度基本介绍

任务调度器就是按照规定的计划完成任务;比如windows,linux的自带的任务调度系统功能;平常开发中也就是按照规定的时间点轮询执行计划任务(比如每周三的凌晨进行数据备份),或者按时间隔触发一次任务调度(比如每3小时执行一次定时抓拍);

二 corn表达式介绍

2.1 位数介绍

如果有用过quartz的读者肯定了解cron时钟周期计划;下面是cron对应位数的说明,其中第七位年份通常忽略,第四位跟第六位同时表达会有歧义,通常只表达具体的一位,另一位使用?表示解决冲突;

位数 说明
第一位 second(0-59)
第二位 minute(0-59)
第三位 hour(0-23)
第四位 day of month(1-31)
第五位 month(1-12)
第六位 day of week(1-7)1是周日,7是周六
第七位 year(1970-2099)

2.2 占位符说明

占位符 说明
* 表示任意时刻
day of month 或者 day of week
- 表示范围
/ 表示间隔
, 表示枚举
L 表示最后day of month 或者 day of week
W 表示有效工作日(1-5)day of month
# 表示第几个星期几 day of week
LW 表示某月最后一个工作日

2.3 常用cron举例

corn 说明
0 0 3 * * ? 每月每天凌晨3点触发
0 0 3 1 * ? 每月1日凌晨3点触发
0 0 3 ? * WEN 星期三中午12点触发
0 0 3 ?* MON-FRI 周一至周五凌晨3点触发
0 0/5 8 * * ? 每天7点至7:55分每隔5分钟触发一次
0 10,20 8 * * ? 每天的8点10分,8点20分触发
0 0 1-3 * * ? 每天的1点至三点每小时触发一次
0 0 8 L * ? 每月最后一天的8点触发
0 10 12 ? * 6#3 每月的第三个星期五的12:10分触发
0 10 12 ? * 6L 2022 表示2022年每月最后一个星期五10:22分触发

三使用cron进行任务调度

3.1 依赖

<dependencies>
    <dependency>
     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

3.2 具体corn任务调度计划

在@Scheduled注解中自定义cron调度计划;将注解用在需要进行调度的方法上

/**
 * @Author lsc
 * @Description <p> </p>
 * @Date 2019/11/11 22:23
 */
@Service
public class PlainService {
  @Scheduled(cron = "30 * * * * ?")
  public void cronScheduled(){
    System.out.println("关注作者博客和公众号,不定期分享原创文章");
  }
}

3.3 启动类

启动类需要加上 @EnableScheduling 表示开启任务调度;

/**
 * @Author lsc
 * @Description <p> 任务调度启动类 </p>
 * @Date 2019/11/11 22:20
 */
@SpringBootApplication
// 开启任务调度
@EnableScheduling
public class ScheduledApplication {

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

四 Scheduled 中其它方式进行任务调度

4.1 fixedDelay

每隔3000毫秒执行一次,必须是上次调度成功后3000毫秒;

  @Scheduled(fixedDelay = 3000)
  public void fixedDelayScheduled(){
    System.out.println("the day nice");
  }

4.2fixedRate

每个3000毫秒执行一次,无论上次是否会执行成功,下次都会执行;

 @Scheduled(fixedRate = 3000)
  public void fixedRateScheduled(){
    System.out.println("the night nice");
  }

4.3 initialDelay

initialDelay 表示初始化延迟1000毫秒后,执行具体的任务调度,之后按照fixedRate进行任务调度;

  @Scheduled(initialDelay = 1000,fixedRate = 3000)
  public void initialDelayStringScheduled(){
    System.out.println("the night nice");
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot 调度任务及常用任务表达式

    1.首先需要用@EnableScheduling注解到*applicatin.java,用来检测是否有调度任务. 2.@Scheduled 注解用于标注这个方法是一个定时任务的方法.Spring会自动扫描这个注解,启动调度任务. package com.david.translate.quartz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.schedulin

  • springboot+Quartz实现任务调度的示例代码

    在spring框架中通过 @Schedule 可以实现定时任务,通过该注解 cron 的属性描述的规则,spring会去调用这个方法. spring已经简单粗暴的实现了定时任务,为什么要使用Quartz ? 如果你现在有很多个定时任务,规则不同,例如: 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘 maven 依赖 <dependency> <groupId>org.quartz-schedul

  • SpringBoot任务调度器的实现代码

    SpringBoot自带了任务调度器,通过注解的方式使用. 启用方式: 在配置类上注解 org.springframework.scheduling.annotation.EnableScheduling Java示例 package bj.scheduler; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.a

  • springboot2.0以上调度器配置线程池的实现

    一 我们使用@EnableScheduling 开启spring task 调度器的时候,发现此调度器默认配置为单线程的. 二 打开注解发现其配置信息在此SchedulingConfiguration类中.发现其创建了ScheduledTaskRegistrar类 研读代码不难发现调度器默认配置是如下代码,线程池为单线程的. protected void scheduleTasks() { if (this.taskScheduler == null) { this.localExecutor

  • java springmvc 注册中央调度器代码解析

    这篇文章主要介绍了java springmvc 注册中央调度器代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在WEB-INF下的web.xml中配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="htt

  • SpringBoot2 task scheduler 定时任务调度器四种方式

    使用@EnableScheduling方式 @Component @Configurable @EnableScheduling public class Task1 { private static Log logger = LogFactory.getLog(Task1.class); @Scheduled(cron = "0/2 * * * * * ") public void execute() { logger.info("Task1>>" +

  • spring boot异步(Async)任务调度实现方法

    在没有使用spring boot之前,我们的做法是在配置文件中定义一个任务池,然后将@Async注解的任务丢到任务池中去执行,那么在spring boot中,怎么来实现异步任务的调用了,方法更简单. 我们还是结合前面 spring boot整合JMS(ActiveMQ实现) 这篇博客里面的代码来实现. 一.功能说明 消费者在监听到队列里面的消息时,将接收消息的任务作为异步任务处理. 二.代码修改 消费者1: package com.chhliu.springboot.jms; import or

  • Springboot集成任务调度实现过程

    一 任务调度基本介绍 任务调度器就是按照规定的计划完成任务:比如windows,linux的自带的任务调度系统功能:平常开发中也就是按照规定的时间点轮询执行计划任务(比如每周三的凌晨进行数据备份),或者按时间隔触发一次任务调度(比如每3小时执行一次定时抓拍): 二 corn表达式介绍 2.1 位数介绍 如果有用过quartz的读者肯定了解cron时钟周期计划:下面是cron对应位数的说明,其中第七位年份通常忽略,第四位跟第六位同时表达会有歧义,通常只表达具体的一位,另一位使用?表示解决冲突: 位

  • Springboot 集成 lombok.jar过程解析

    这篇文章主要介绍了Springboot 集成 lombok.jar过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍 Spring Boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这里介绍给大家使用. Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法:在使用Lo

  • Springboot集成fastDFS配置过程解析

    配置文件 配置fdfs_client.conf配置文件 # 连接超时时间,针对socket套接字函数connect,默认为30秒 connect_timeout=30000 # 网络通讯超时时间,默认是60秒 network_timeout=60000 tracker_server = 47.98.159.15:22122 导入依赖 <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs

  • SpringBoot框架集成ElasticSearch实现过程示例详解

    目录 依赖 与SpringBoot集成 配置类 实体类 测试例子 RestHighLevelClient直接操作 索引操作 文档操作 检索操作 依赖 SpringBoot版本:2.4.2 <dependencies> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <opti

  • Spring-boot集成pg、mongo多数据源过程详解

    这篇文章主要介绍了Spring-boot集成pg.mongo多数据源过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 修改POM文件,增加相应Jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </

  • springboot集成fastDfs过程代码实例

    这篇文章主要介绍了springboot集成fastDfs过程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 pom.xml 引入依赖 <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.1-RELEASE</vers

  • 基于springboot集成hbase过程解析

    这篇文章主要介绍了基于springboot集成hbase过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springboot-habse: https://github.com/spring-projects/spring-hadoop-samples/tree/master/hbase 依赖: <dependency> <groupId>org.springframework.data</groupId> &

  • springboot集成swagger过程解析

    这篇文章主要介绍了springboot集成swagger过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springboot集成swagger 1.pom.xml中引入: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2

  • SpringBoot项目集成Flyway详细过程

    一.Flyway Flyway是独立于数据库的应用.管理并跟踪数据库变更的数据库版本管理工具.用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步. 二.流程 1. 首先配置好flyway的基本信息后,运行项目,会在数据库表中默认新建一个数据表用于存储flyway的运行信息,默认的数据库名:flyway_schema_history 2. 紧接着Flyway将开始扫描文件系统或应用程序的类路径进行迁移.然后,Flyway的数据迁移将基于对用sql

  • SpringBoot 集成Redis 过程

    Redis 介绍: Redis 服务 Redis (REmote Dictionary Server) 是一个由Salvatore Sanfilippo 完成的key-value存储系统,是跨平台的非关系型数据库. Redis 是一个开源的使用ANSI C语言编写.遵循BSD 协议的.支持网络.可基于内存.分布式.可选择持久性的键值对存储数据库,并提供多语言的API. Redis 通常被认为是数据结构服务器,其值可以是字符串.哈希.列表.集合以及有序集合. Redis 优点 异常快,每秒可以执行

随机推荐