![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Quartz
文章平均质量分 88
山石岐渡
这个作者很懒,什么都没留下…
展开
-
Quartz教程 - 9动态调度【完结】
该方法接收到 ScheduleJob 对象,通过该对象来创建定时任务,创建定时任务使用的就是前面的任务类,将 ScheduleJob 对象传递到任务类中,每次触发任务,在任务类中都通过传递的 ScheduleJob 对象,使用。正常情况下,我们是有一个任务列表页面,显示所有的任务,可以对这些任务进行操作,也就是一个 CRUD 的功能。在 Service 中实现任务数据的维护,更新数据库的数据,同时调用 Quartz 工具类,修改任务的调度。上面只是一个工具类,我们需要在维护任务的时候,调用上面的工具类。原创 2024-01-11 20:20:15 · 968 阅读 · 0 评论 -
Quartz教程 - 8持久化与集群
Quartz 持久化需要使用数据库,并在数据库中建立一些表,我们可以将这些表建在业务数据库中,也可以将这些表建立在独立的数据库中,如果建立在独立的数据库中,那么我们的系统需要配置多个数据源。运行起来后,你有可能会发现定时任务一直只会在一个项目定时执行,另外一个项目没有动静,这其实是因为另一个项目一直抢不到执行的权限,这个其实是没有问题的,如果关闭调抢到执行权限的项目,你就会发现另一个项目就会执行了。默认情况下 Quartz 是保存在内存中的,如果不做持久化,系统停止或重启,任务将丢失;原创 2024-01-11 20:09:45 · 884 阅读 · 0 评论 -
Quartz教程 - 7SpringBoot集成Quartz
上面使用的是原生的方法演示 Quartz 的时候,但是在实际的使用中,肯定不会像前面那样使用,一般会在 Spring 项目中或 SpringBoot 项目中进行使用,下面演示一下在 SpringBoot 项目中使用 Quartz。首先创建一个 Quartz 的配置类,在这个配置类中,创建 JobDetail 和 Trigger,并将他们添加到Spring 容器中。在实际使用中,我们可以在 Job 类中注入我们业务 Service 的依赖,这样就可以调用 Service 中的方法,执行业务逻辑了。原创 2024-01-11 20:05:10 · 433 阅读 · 0 评论 -
Quartz教程 - 6调度器
这些是 Quartz 中常见的内置日历实现,每种日历都有其特定的用途和功能。除了这些内置的日历实现外,你还可以实现自定义的。如果我们想在某些时候不执行任务,例如有一个任务,一年每天都会执行,但是想在节假日不执行,该如何做呢?通过实现这个接口,你可以定义自己的日历逻辑,用于控制任务的执行时间。在Quartz 中是一个接口,它有很多的实现类,我们这里演示一下,在指定的日期不执行任务。接口定义了日历的抽象,而具体的日历实现则有多种方式,其中包括一些内置的和自定义的实现。,则不会进行替换,而是保留现有的。原创 2024-01-11 19:27:49 · 366 阅读 · 0 评论 -
Quartz教程 - 5触发器
SimpleTrigger 只能定义按照指定频率执行的任务,如果要定义复杂的执行规则,SimpleTrigger 是无法支持的,一般我们用的最多的就是。在实际使用中,根据您的需求选择合适的Misfire策略非常重要,这可以确保即使在意外情况下,任务也能够按照期望的方式执行。作用:立即执行所有错过的触发,错过了100个,一下子把错过的100个全部执行了,然后按照原计划执行任务。上面的代码和之前的 HelloWorld 基本是一样的,只是使用了不同的触发器。在一个字段中可以指定多个数值,例如在星期字段中,原创 2024-01-11 19:26:20 · 1008 阅读 · 0 评论 -
Quartz教程 - 4Job
首先从 JobDataMap 中获取到 count,然后修改 count 的值,然后重新将 count 的值保存到 JobDataMap 中,这样下一次任务执行的时候,就可以获取到更新后的值。为什么要每次创建一个新的对象呢,因为可能任务执行比较久,一次任务没执行完,下一次任务就开始执行的问题,如果使用的是同一个对象,就可能存在并发问题。注解,让任务串行执行,否则当前任务没有执行完成,下一次任务执行的时候,通过 JobDataMap 获取到的值是没有被更新的。注解,上一次执行完成,才会执行下一次任务。原创 2024-01-11 19:25:13 · 988 阅读 · 0 评论 -
Quartz教程 - 2HelloWorld
任务详情就是 JobDetail,这个 JobDetail 其实是对 Job 的包装和描述,每次执行任务,调度器就会根据 JobDetail 的描述信息通过反射创建一个新的 Job 实例,这样可以规避并发访问的问题。,也存在版本兼容问题,使用1.4.x 和 1.3.x都不行,需要使用 1.2.x 的。,quartz 的日志是打印不出来的,但是要注意版本问题,因为 quartz 中的。的版本是 1.7.x 的,这里我使用 2.x.x 版本的。类中只有一个方法,实现了 Job 类中的。原创 2024-01-11 19:21:55 · 314 阅读 · 0 评论 -
Quartz教程 - 3传递参数
可以通过 JobExecutionContext 对象获取到 JobDetail 和 Trigger 的信息,然后获取到 JobDataMap 的信息。可以获取 JobDetail 和 Trigger 传递的参数合并后的结果,如果传递参数的时候 JobDetail 和 Trigger 传递了相同的 key 值,那么 Trigger 中传递的参数会覆盖 JobDetail 中的参数。如果我们想在创建任务和触发器的时候,给任务传递一些参数,在执行任务的时候,可以读取到这些参数,那么该如何处理呢?原创 2024-01-11 19:23:19 · 835 阅读 · 0 评论 -
Quartz教程 - 1Quartz简介
我们在项目中经常会需要执行一些定时任务,例如定时进行数据备份和清理;定时检查创建的订单有没有支付,没有支付超过30分钟就将其取消,这些都会用到定时任务。Quartz 就是一个开源的、用于 Java 编程语言的任务调度框架。它的主要作用是允许开发者根据预定的时间执行特定的任务。这些任务可以是一次性的,也可以是周期性的,Quartz 可以有效地管理这些任务的执行。原创 2024-01-11 19:20:09 · 352 阅读 · 0 评论