首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在springboot工程中修改使用quartz创建的定时任务

在springboot工程中修改使用quartz创建的定时任务

原创
作者头像
JQ实验室
发布于 2022-12-08 12:22:06
发布于 2022-12-08 12:22:06
2K0
举报
文章被收录于专栏:实用技术实用技术
Quratz是什么:

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。

Quartz 允许程序开发人员根据时间的间隔来调度作业。

Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。

创建springboot工程集成Quratz:

在IDEA中基于springboot 2.7.*创建工程,集成Quratz,勾选I/O下Quratz Scheduler即可;

在这里插入图片描述
在这里插入图片描述

创建完成后的pom.xml中Quratz的依赖是

代码语言:txt
AI代码解释
复制
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

因为需要编写接口服务,所以引入了spring-boot-starter-web依赖;

获取所有Job信息;
  • 编写restful接口;创建接口添加注解RestController和RequestMapping
代码语言:txt
AI代码解释
复制
@RestController
@RequestMapping("/api/cron")
public class CronRS {

    @Autowired
    Scheduler scheduler;

   
    @GetMapping("/list")
    public List<Map<String,Object>> listCron() throws Throwable{

        GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
        Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);
        List<Map<String,Object>> list = new ArrayList<>();
        for (JobKey jobkey: jobKeys) {
            List<? extends Trigger> triggers =scheduler.getTriggersOfJob(jobkey);
            for (Trigger trigger:triggers) {
                Map<String,Object> map = new HashMap<>();
                map.put("jobName",jobkey.getName());
                map.put("jobGroup",jobkey.getGroup());
                TriggerKey triggerKey = trigger.getKey();
                map.put("triggerKey",triggerKey.getName());
                Trigger.TriggerState state = scheduler.getTriggerState(triggerKey);
                map.put("state",state.name());
                if (trigger instanceof CronTrigger) {
                    CronTrigger cronTrigger = (CronTrigger) trigger;
                    String cronExpression = cronTrigger.getCronExpression();
                    map.put("cron",cronExpression);
                }
                list.add(map);
            }
        }

        return list;
    }
修改指定的Job定时任务触发信息;

需要传入指定的TriggerKey,才能确定需要修改的触发器;

代码语言:txt
AI代码解释
复制
 @GetMapping("/update")
    public String updateCron() throws Throwable{

        TriggerKey triggerKey = new TriggerKey("pushJobTrigger");
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder
                .cronSchedule("0/10 * * * * ?");
        Trigger trigger = TriggerBuilder.newTrigger()
                .usingJobData("type","studio-restart")
                .withIdentity(triggerKey)
                .withSchedule(scheduleBuilder)
                .build();

        scheduler.rescheduleJob(triggerKey,trigger);

        return "ok";
    }
实现逻辑:

在以上代码中,接口服务中的Scheduler是可以直接依赖注入的;不需要额外指定Bean;但在之前版本的Quratz中是需要的;

  • 获取所有job的逻辑是:使用GroupMatcher匹配获取所有的jobKey;主要使用scheduler.getJobKeys()方法获取

使用jonbkey获取对应的触发器trigger;

获取所有触发器的相关信息;

  • 修改逻辑根据TriggerKey重新设置CronScheduleBuilder;在下一次循环中生效;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​分布式定时任务框架Quartz
项目中总要写那么几个定时任务来处理一些事情。一些简单的定时任务使用Spring自带的定时任务就能完成。但是如果需要大量的定时任务的话要怎么才能统一管理呢?
乱敲代码
2020/05/21
5K0
SpringBoot整合Quartz实现定时任务(单任务、多任务)
前言 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs 一、添加依赖 Code <dependencies> <dependency> <groupId>org.springframework.boot</groupId>
MiChong
2020/09/24
2.8K0
SpringBoot 整合 Quartz 实现 JAVA 定时任务的动态配置
首先说下这次主题,动态配置。没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式
业余草
2020/07/17
2.4K0
SpringBoot 整合 Quartz 实现 JAVA 定时任务的动态配置
SpringBoot 整合 Quartz 实现 JAVA 定时任务的动态配置
来源:https://www.cnblogs.com/laoyeye/p/9352002.html老爷爷的博客园
java进阶架构师
2020/10/23
9130
SpringBoot 整合 Quartz 实现 JAVA 定时任务的动态配置
SpringBoot Quartz实现动态定时任务
JobDetail:基于Job,进一步封装。其中关联一个Job,并为Job指定更详细的信息。
jwangkun
2021/12/23
2.4K0
SpringBoot Quartz实现动态定时任务
springboot使用quartz实现定时任务_quartz集群任务调度
springboot使用quartz实现定时任务_quartz集群任务调度前言本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充,其中最大的变化就是后台框架变成了SpringBoot。本工程所用到的技术或工具有:SpringBootMybatisQuartzPageHelperVueJSElementUIMySql数据库正文配置本例中仍然是使用mysql数据库作为Quartz任务持久化的
Java架构师必看
2022/05/10
3.4K2
springboot使用quartz实现定时任务_quartz集群任务调度
Quartz定时任务[通俗易懂]
job就是想要实现的任务类,每一个job必须实现job接口,且实现接口中的 excute()方法。
全栈程序员站长
2022/08/02
9780
Quartz定时任务[通俗易懂]
【SpringBoot】25、SpringBoot中使用Quartz管理定时任务
定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的 Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任务的时候,就需要去改动代码,还得启停服务器,这是非常不友好的事情
全栈程序员站长
2022/11/01
9230
SpringBoot整合Quartz定时任务(持久化到数据库)
最近在做项目,项目中有个需求:需要使用定时任务,这个定时任务需要即时生效。 查看Quartz官网之后发现:Quartz提供两种基本作业存储类型:
全栈程序员站长
2022/07/25
2.4K0
SpringBoot整合Quartz定时任务(持久化到数据库)
重学SpringBoot3-整合Quartz定时任务
Quartz 是一个开源的任务调度框架,用于在应用程序中创建、管理和调度定时任务。将 Quartz 和 Spring Boot 3 结合,可以轻松实现定时任务的灵活管理。本文将详细介绍如何在 Spring Boot 3 项目中集成 Quartz Scheduler 并实现示例任务的调度。
CoderJia
2024/11/14
6140
重学SpringBoot3-整合Quartz定时任务
记录Quartz定时任务框架的学习过程(一)
拿火车票购票来说,当你下单后,后台就会插入一条待支付的task(job),一般是30分钟,超过30min后就会执行这个job,去判断你是否支付,未支付就会取消此次订单;当你支付完成之后,后台拿到支付回调后就会再插入一条待消费的task(job),Job触发日期为火车票上的出发日期,超过这个时间就会执行这个job,判断是否使用等。
青衫染红尘
2021/04/28
8580
SpringBoot3集成Quartz
Quartz由Java编写的功能丰富的开源作业调度框架,可以集成到几乎任何Java应用程序中,并且能够创建多个作业调度;
知了一笑
2023/09/01
7350
SpringBoot3集成Quartz
SpringBoot+Quartz+数据库存储(附完整代码和数据库脚本)
6、自定义MyJobFactory,解决spring不能在quartz中注入bean的问题
叫我阿杰好了
2022/11/07
2.9K0
SpringBoot+Quartz+数据库存储(附完整代码和数据库脚本)
分布式定时任务,你了解多少?基于Quartz实现分布式任务解决方案!
后台定时任务系统在应用平台中的重要性不言而喻,特别是互联网电商、金融等行业更是离不开定时任务。在任务数量不多、执行频率不高时,单台服务器完全能够满足。但是随着业务逐渐增加,定时任务系统必须具备高可用和水平扩展的能力,单台服务器已经不能满足需求。因此需要把定时任务系统部署到集群中,实现分布式定时任务系统集群。
章为忠学架构
2023/10/06
10.2K0
分布式定时任务,你了解多少?基于Quartz实现分布式任务解决方案!
springboot整合quartz实现定时任务的动态修改,启动,暂停等操作
一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的。 在项目开发过程当中,某些定时任务,可能在运行一段时间之后,就不需要了,或者需要修改下定时任务的执行时间等等。 需要在代码当中进行修改然后重新打包发布,很麻烦。使用Quartz来实现的话不需要重新修改代码而达到要求。
海加尔金鹰
2020/06/09
19.8K5
SpringBoot 集成 Quartz,一文搞定任务调度
用过Quartz的都懂,Quartz就是一个完全由java编写的开源作业调度框架。
一行Java
2023/02/23
4.9K0
SpringBoot 集成 Quartz,一文搞定任务调度
spring-boot-2.0.3之quartz集成,不是你想的那样哦!
前言   开心一刻     晚上回家,爸妈正在吵架,见我回来就都不说话了,看见我妈坐在那里瞪着我爸,我就问老爸“你干什么了惹我妈生这么大气?”  我爸说“没有什么啊,倒是你,这么大了还没有媳妇,要是你
青石路
2018/12/19
1.2K0
springboot quartz定时任务调度
在我们添加spring-boot-starter-quartz依赖后就不需要主动声明工厂类,因为spring-boot-starter-quartz已经为我们自动化配置好了。展开spring-boot-autoconfigure-2.0.0.RELEASE.jar,找到org.springframework.boot.autoconfigure.quartz,该目录就是SpringBoot为我们提供的Quartz自动化配置源码实现,在该目录下有如下所示几个类:
山行AI
2019/08/30
2.2K0
SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除。
链接:blog.csdn.net/qq_39648029/article/details/108993476
肉眼品世界
2020/11/11
3.3K0
SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除。
SpringBoot集成Quartz(定时任务)
quartz是OpenSymphony开源组织在Job scheduling领域的开源项目,是由java开发的一个开源的任务日程管理系统。
鱼找水需要时间
2023/02/16
1.4K0
SpringBoot集成Quartz(定时任务)
推荐阅读
相关推荐
​分布式定时任务框架Quartz
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档