Quartz的两种触发器(SimpleTrigger && CronTirgger)

本文介绍了Quartz任务调度系统的概念和官网,重点讲解了SimpleTrigger和CronTrigger两种触发器的使用,并提供了在线生成Cron表达式的网址。通过四个案例展示了Quartz在实际应用中的配置和执行,包括入门案例、定时定点执行、循环执行和参数传递。此外,还对比了Spring Task与Quartz的优缺点以及在单线程和多线程场景下的使用情况。
摘要由CSDN通过智能技术生成

在这里插入图片描述

一、什么是quartz???

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。
是完全由java开发的一个开源的任务日程管理系统
简单来说就是实现“计划(或定时)任务”的系统

二、quartz官网

quartz官网

如果想要更加深度的了解quartz的话,可以去它的官网看看,下图框起来的地方,有关于quartz知识的所有讲解
在这里插入图片描述

三、Quartz的触发器

它有五种类型的Trigger(定时器)
SimpleTrigger
CronTirgger
DateIntervalTrigger
NthIncludedDayTrigger
Calendar类( org.quartz.Calendar)

今天要介绍的就是SimpleTrigger和CronTrigger。

应用 场景:
SimpleTrigger:执行N次,重复N次
CronTrigger:几秒 几分 几时 哪日 哪月 哪周 哪年,执行

四、存储方式

RAMJobStore(内存作业存储类型)和JDBCJobStore(数据库作业存储类型)

优点 缺点
RAMJobStore 不要外部数据库,配置容易,运行速度快 因为调度程序信息是存储在被分配给JVM的内存里面,所以,当应用程序停止运行时,所有调度信息将被丢失。另外因为存储到JVM内存里面,所以可以存储多少个Job和Trigger将会受到限制
JDBCJobStore 支持集群,因为所有的任务信息都会保存 运行速度的快慢取决与连接数据库的快慢 到数据库中,可以控制事物,还有就是如果应用服务器关闭或者重启,任务信息都 不会丢失,并且可以恢复因服务器关闭或者重启而导致执行失败的任务

运行原理
在这里插入图片描述

五、在线生成表达式网址

在线生成表达式网址

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

下图是比较常用的日期
在这里插入图片描述

六、quartz触发器案例

1、创建一个项目
在这里插入图片描述

2、导入jar包

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
</dependency>
 <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz-jobs</artifactId>
      <version>2.2.1</version>
 </dependency>

在这里插入图片描述
3、创建两个类,来测试这个世界触发器的作用
在这里插入图片描述

package com.zking.quartz01.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * @author 小七
 * @create  2020-12-03 11:16
 */
public class RamJob implements Job {
   
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
   
        System.out.println("定时任务具体执行的业务逻辑代码。。。");

    }
}

在这里插入图片描述

案例一:入门触发器案例

package com.zking.quartz01.quartz;

import com.zking.quartz01.job.RamJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.JobBuilder.newJob;

/**
 * @author 小七
 * @create  2020-12-03 11:07
 */
public class Demo1 {
   
    public static void main(String[] args) throws Exception{
   
        //调度器
        SchedulerFactory schedulerFactory=new StdSchedulerFactory();
        Scheduler scheduler=schedulerFactory.getScheduler();
        //类
        JobDetail jobDetail=newJob(RamJob.clas
是的,Quartz SimpleTrigger触发器可能无法按照预期执行。以下是一些可能导致触发器无法按照预期执行的原因: 1. 触发器的开始时间晚于当前时间:如果你设置的触发器开始时间晚于当前时间,那么触发器不会立即执行。你可以通过将开始时间设置为当前时间或者稍早的时间来解决这个问题。 2. 触发器的重复间隔太短:如果你设置的重复间隔太短,那么触发器可能会在上一个触发事件还未完成时再次触发,导致触发时间不准确。你可以适当增加触发器的重复间隔来解决这个问题。 3. Quartz调度器的线程池满负荷:如果Quartz调度器的线程池满负荷,那么触发器可能会延迟执行。你可以适当增加线程池的大小来解决这个问题。 4. Quartz调度器的配置不正确:如果你的Quartz调度器的配置不正确,那么触发器可能无法按照预期执行。你可以检查你的Quartz调度器的配置是否正确,或者尝试重新配置调度器。 5. 系统资源不足:Quartz触发器也需要系统资源的支持,如果系统资源不足,可能会导致触发器无法按照预期执行。你可以检查系统的资源使用情况,如CPU、内存等。如果资源不足,可以尝试增加系统资源。 6. 触发器的Misfire策略设置不正确:如果你的触发器Misfire策略设置不正确,可能会导致触发器无法按照预期执行。你可以检查你的Misfire策略是否正确,或者尝试重新设置Misfire策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值