Quartz的重要接口API(二)

简介: Quartz的重要接口API(二)

一. Job方面的接口

一.一 Job接口

Quartz 框架提供了 org.quartz.Job 接口,开发者需要实现这个接口,让框架知道,开发者自定义的工作任务是什么。

package org.quartz;
public interface Job {
    void execute(JobExecutionContext context)
        throws JobExecutionException;
}


里面只有一个方法, execute()。


里面的参数 JobExecutionContext 对象,是 作业运行上下文对象,可以获取作业的相关信息。

一.二 JobExecutionContext

用于获取上下文对象的内容。

主要方法有:

image.png


一.三 JobBuilder

一.三.一 作用

是建造者模式, 通过 JobBuilder 来创建 JobDetail。


需要绑定 一.一 里面的作业类,来表示执行的是哪一个作业。


一个作业,可以被多个触发器触发, 一个作业,也可以被多次绑定,虽然同一个Job,执行的内容是一致的,但是作业运行上下文对象是不一样的,

为了区分不同的作业,需要给当前这个作业设置一个独一无二的id, 设置job的编号和组的编号,就是 JobKey。 job的编号是必须的,组的名称可以不设置。


主要方法有:

image.png


可以链式编程,方法返回的都是 this 当前对象 。


一.三.二 常用方法

image.png一.四 JobKey

存储 JobBuilder 创建时,传递过来的 job编号和组名

package org.quartz;
import org.quartz.utils.Key;
public final class JobKey extends Key<JobKey> {
    private static final long serialVersionUID = -6073883950062574010L;
    public JobKey(String name) {
        super(name, null);
    }
    public JobKey(String name, String group) {
        super(name, group);
    }
    public static JobKey jobKey(String name) {
        return new JobKey(name, null);
    }
    public static JobKey jobKey(String name, String group) {
        return new JobKey(name, group);
    }
}


JobBuilder 传递过来时,withIdentity(name,group)

public JobBuilder withIdentity(String name, String group) {
        key = new JobKey(name, group);
        return this;
 }


一.五 JobDataMap

最终继承 java.util.Map 接口,也是 Key-value 类型的 Map接口, 用于存放数据。


image.png


一.六 JobDetail

真正被调用的接口, 通过JobBuilder 通过建造者模式创建出来,可以获取它的相关信息


image.png


Job方面的接口,大概就是这六个。


二. Trigger 方面的接口

二.一 TriggerBuilder

二.一.一 作用

建造者模式,用于创建 Trigger。


可以设置 开始的时间, 可以设置立即启动, 可以设置结束的时间,也可以设置Trigger的标识名和组名,可以设置调度器(多长时间运行一次,运行几次)。 调度器与开始的时间进行关联, 构建 什么时候开始执行,多长时间运行一次,运行几次,一个完整的任务链。


image.png


可以链式编程, 返回的是 this 当前对象。


二.一.二 常用方法

image.png

二.二 TriggerKey

Trigger 触发器的标识, 与JobKey 类似

package org.quartz;
import org.quartz.utils.Key;
public final class TriggerKey extends Key<TriggerKey> {
    private static final long serialVersionUID = 8070357886703449660L;
    public TriggerKey(String name) {
        super(name, null);
    }
    public TriggerKey(String name, String group) {
        super(name, group);
    }
    public static TriggerKey triggerKey(String name) {
        return new TriggerKey(name, null);
    }
    public static TriggerKey triggerKey(String name, String group) {
        return new TriggerKey(name, group);
    }
}


TriggerBuilder 传递过来时,withIdentity(name, group)

public TriggerBuilder<T> withIdentity(String name, String group) {
        key = new TriggerKey(name, group);
        return this;
  }


二.三 ScheduleBuilder

有四个实现类

image.png


但常用的,只有两个, SimpleScheduleBuilder 和 CronScheduleBuilder


SimpleScheduleBuilder 是通过方法来定义,隔多长时间执行一次,执行几次。 什么时候开始执行,在 TriggerBuilder 里面定义。


CronScheduleBuilder 是通过 cron 表达式,来定义多长时间执行一次,执行几次和什么时候开始执行。


二.四 SimpleScheduleBuilder

二.四.一 作用

里面定义了很多方法, 有second(秒),minute(分钟),hour(小时) 来定义,每隔多长时间再次执行一次, 也定义了执行的次数。


如果上升到天,月和周的话,就需要开发者自己进行处理时间了。


以second 秒进行举例


image.png


提供了两种方式, 静态方法和普通方法设置时间间隔和次数。


发现,以 repeatSecondlyForever(int seconds) 为例:

public static SimpleScheduleBuilder repeatSecondlyForever(int seconds) {
    return simpleSchedule()
        .withIntervalInSeconds(seconds)
        .repeatForever();
}


内部调用了非静态的方法。


读者可以自行进行选择使用哪一种方式, 比较喜欢静态的方式,写起来简单。


二.四.二 常用方法

以second 秒 进行举例。

image.png


image.png

提示: 当使用普通方法时,repeatForever()不能单独使用,withRepeatCount(int triggerRepeatCount)也不能单独使用,


Exception in thread “main” org.quartz.SchedulerException: Repeat Interval cannot be zero


必须要与 withIntervalInSeconds(int intervalInSeconds) 方法同时使用。


但可以单独使用 withIntervalInSeconds(int intervalInSeconds) 方法,这时只执行一次。


二.五 CronScheduleBuilder

关于 CronScheduleBuilder, 后面会有专门的章节进行讲解。


三. Scheduler 方面的接口


三.一 StdSchedulerFactory

工厂模式,用于创建 调度 Scheduler,有一个方法 getDefaultScheduler(), 用于获取 Scheduler

public static Scheduler getDefaultScheduler() throws SchedulerException {
        StdSchedulerFactory fact = new StdSchedulerFactory();
        return fact.getScheduler();
}


由于 StdSchedulerFactory 的构造方法是 public, 所以有两种方式可以获取 Scheduler


三.一.一 静态方法 getDefaultScheduler()获取

Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();


三.一.二 构造方法 获取

StdSchedulerFactory stdSchedulerFactory=new StdSchedulerFactory();
  Scheduler scheduler=stdSchedulerFactory.getScheduler();


静态方法内部实际调用的是构造方法。


建议采用第一种方式 进行获取 Scheduler


三.二 Scheduler

用于关联 JobDetail 和 Trigger, 并且可以启动和停止调度。


image.png


谢谢您的观看!!!


相关文章
|
4天前
|
自然语言处理 安全 API
触发邮件接口有哪些?邮件API文档
**触发邮件接口**如AokSend、Mailgun、Amazon SES、Postmark和Sendinblue是自动化企业通信的关键。这些接口在特定事件时自动发送邮件,提高效率和客户体验。例如,AokSend提供详细的API文档,支持事件触发、模板管理和多语言集成;Mailgun以灵活性著称;Amazon SES适合大规模发送;Postmark专注于事务邮件;Sendinblue则提供邮件、短信和营销自动化功能。每种服务都有示例代码展示如何使用API发送邮件。选择合适的接口能提升企业通信效率和客户满意度。
|
5天前
|
安全 API 网络安全
API接口安全加固:应对黑客攻击的实战指南
**API安全摘要:** API成为黑客目标,攻击类型包括未授权访问、CSRF、DDoS、数据泄露和注入攻击。防御策略包括使用OAuth 2.0和JWT进行认证授权,防止CSRF攻击,限制请求速率,避免数据泄露,以及实施注入攻击防护。开发者应定期更新安全措施,确保API安全性。示例代码展示了Node.js中JWT认证的实现。
|
2天前
|
安全 API 数据安全/隐私保护
​验证码邮件API有哪些?分析最好的3个接口平台
验证码邮件API如AOKSend、SendGrid和Mailgun是用户身份验证的关键工具。这些API提供高效、可靠的邮件发送服务,确保验证码的安全传输。AOKSend以其快速发送和易用性著称,SendGrid则以全面功能和扩展性见长,而Mailgun则以灵活性和高送达率闻名。开发者可以根据需求选择合适的API,通过示例代码轻松集成到应用中,增强安全性和用户体验。
|
5天前
|
安全 API 开发工具
微信开发:API接口与ipad协议的深度比较及最佳选择
微信开发:API接口与ipad协议的深度比较及最佳选择
|
5天前
|
API
微信API接口、微信二次开发API调用
微信API接口、微信二次开发API调用
|
5天前
|
API Android开发 iOS开发
个人微信开发API协议接口
个人微信开发API协议接口
|
5天前
|
Java API 开发工具
企业微信api,企业微信sdk接口java调用源码
企业微信api,企业微信sdk接口java调用源码
|
5天前
|
Java API 开发工具
个人微信api接口java调用源代码
个人微信api接口java调用源代码
|
5天前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口
|
5天前
|
API 开发工具
企业微信api接口,企业微信sdk
企业微信api接口,企业微信sdk