- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
主要接口定义如下:
The key interfaces of the Quartz API are:
Scheduler 的生命周期受它的创建限制,通过一个 SchedulerFactory 和对其 shutdown()
方法的调用。一旦创建了调度程序接口,就可以使用添加、删除和列出作业和触发器,并执行其他与调度相关的操作(例如暂停触发器)。但是,调度器实际上不会在任何触发器(执行作业)上起作用,直到它从 start()
方法开始。
Quartz 为我们提供了 Builder,便于我们定义 Domain Specific Language (or DSL, also sometimes referred to as a “fluent interface”).
为了更方便的书写代码,可以使用如下的静态导入代码。
import static org.quartz.JobBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.CalendarIntervalScheduleBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.DateBuilder.*;
package org.quartz;
public interface Job {
public void execute(JobExecutionContext context)
throws JobExecutionException;
}
当作业的触发器触发时(稍后会详细说明),execute(..)
方法由一个调度程序的工作线程调用。传递给该方法的 JobExecutionContext 对象提供了有关其“运行时”环境的信息的作业实例——执行它的调度程序的句柄、触发执行的触发器的句柄、作业的 JobDetail 对象和其他一些项。
JobDetail 对象是由 Quartz 客户机(您的程序)在任务添加到调度器时创建的。它包含作业的各种属性设置,以及 JobDataMap,它可以用来存储作业类的给定实例的状态信息。它本质上是作业实例的定义,在下一课中将进一步详细讨论。
触发器(Trigger)对象用于触发作业的执行(或“触发”)。当您希望调度作业时,您将实例化一个触发器并“调整”其属性,以提供您希望拥有的调度。触发器也可能有与它们相关联的JobDataMap——这对于将参数传递给特定于触发器触发的作业是有用的。带有少量不同触发器类型的Quartz船,但最常用的类型是SimpleTrigger和CronTrigger。
如果您需要“一次性”执行(仅在给定时刻执行一项任务),或者您需要在给定的时间内解雇一份工作,并且重复执行N次,在执行期间延迟执行,那么 SimpleTrigger 非常方便。如果你希望基于日历的日程安排(比如“每个周五,中午”或“每月10日10时15分”触发,CronTrigger 是很有用的。
许多工作调度器没有关于工作和触发器的不同概念。
有些人将“工作”定义为简单的执行时间(或时间表)和一些小的工作标识符。另一些则很像石英的工作和触发对象的结合。在开发 Quartz 的同时,我们决定在时间表和在该计划上执行的工作之间创建分离是有意义的。这(在我们看来)有许多好处。
例如,可以在作业调度器中创建和存储作业,独立于触发器,并且许多触发器可以与相同的作业相关联。这种松耦合的另一个好处是,在相关触发器过期之后,可以配置在调度器中保留的作业,以便以后可以重新调度,而不必重新定义它。它还允许您修改或替换触发器,而不必重新定义其关联的作业。
Job 和 触发器(Triggers) 被赋予标识键(Identities),当它们在 Quartz 调度器中注册时。
Job 和触发器的关键(JobKey和TriggerKey)允许它们被放置到“组”(Group)中,这些“组”对组织工作和触发“报告工作”和“维护工作”等类别非常有用。
作业或触发器的键的名称部分必须在组内是惟一的,或者换句话说,作业或触发器的完整密钥(或标识符)是名称和组的复合。
刚接触 Quartz,我对简单形状、渐变和阴影的绘制速度感到好奇;特别将 Quartz 绘图功能与 iPhone 上的 Quartz 图像绘制进行比较。 假设我需要绘制一个填充、描边和阴影的矩形。我假
我遇到了一个问题,即在包含要运行的类文件的应用程序之前部署 quartz-service.xml(使用 quartz 1.8.6 和 JBOSS 5.1.x)。有没有办法延迟 quartz 的启动?
我正在研究使用Quartz Scheduler,并且想知道是否可以按时间而不是按时间调度作业,而可以在另一个作业完成时进行调度。因此,当作业A完成时,它将启 Action 业B。完成后,它将启 Act
我正在使用 Quartz 进行一个项目,并且一直存在与作业的依赖关系的问题。 我们有一个设置,其中 A 和 B 不相互依赖,但 C 是: A 和 B 可以同时运行,但 C 只能在 A 和 B 都完成的
JobDetail.requestsRecovery 的文档属性(property)声明如下 Instructs the Scheduler whether or not the Job should
我得到的调度程序如下: StdScheduler schedulerBean = (StdScheduler) ApplicationContextUtil.getBean(schedulerBean
我正在使用 CronTriggerBean 和 SimpleTriggerBean quartz 调度程序来执行触发器。执行触发器后永久不保存有关触发器的详细信息。在执行之前触发器数据被存储在执行之后
我在我的 .NETCore 服务器中使用 Serilog,并在我的云部署中使用多个接收器,例如控制台、文件和 Graylog (GELF)。 一旦我将日志级别设置为 DEBUG,我每隔几秒钟就会从 q
全部, 我们配置了一个 Quartz.net 调度器。其配置如下: 在分析数据库时,我们注意到以下流量每 23-27 秒执行一次: exec sp_executesql N'SELECT
目前我有一个代码,它有一个 java main 方法,它的执行需要很少的命令行参数。我正在将此作为 quartz 作业,我想将参数传递给这项工作。 有什么办法可以做到吗?我对 JobDataMap 进
我正在使用 Quartz Scheduler,有 15 个工作。对于每项工作,都有一个触发器。 我想为每个触发器设置优先级。我可以将低优先级设置为 10,将高优先级设置为 1。 但是因为我有 15 个
我正在使用 Quartz 框架,对时间生成有点困惑。这是一个简单的代码,它在上午 11:30 生成每日触发器。为了测试这一点,我使用 ComputeFireTimes 查询生成了接下来的 100 个连
我正在使用 Quartz 调度,更具体地说是一个设置为每周每天晚上 10 点醒来的 cron 触发器。 我接触的另一个小组正在询问调度程序在一天中将唤醒多少次以检查它是否需要运行作业。晚上 10 点作
我们有一个托管在 IIS 8.0 上的 Intranet 应用程序。 我们有一些可用的网络方法需要在特定时间执行。 因此,我们使用了 Quartz 调度程序来调度执行 Web 方法的作业。在 glob
我有一个 quartz 作业,每天下午 3 点(服务器时间)运行。我想做的是让它在下午 3 点运行,但针对美国的每个时区。 quartz 作业会触发一封电子邮件给我的用户,我希望每个人都能在他们的时间
我正在尝试在我的 web 项目中使用 Quartz.net。我这样配置我的应用程序: CRMMoreThanOneJob jobGroup1 ReportingPortalBLL.Job
我们有 2 个应用程序使用 quartz 进行调度。我们应用程序的 quartz.properties 如下: org.quartz.scheduler.instanceName = sr22Quar
我有一些关于 Quartz 集群的问题,特别是关于触发器如何在集群内执行。 在执行作业时,quartz 是否对节点有任何偏好?例如总是或从不上次执行相同作业的节点,或者只是哪个节点首先执行作业? 是否
我记得我们不能终止当前正在运行的 Quartz Job,但我们可以中断并在必要时进行 bool 检查,是否需要进一步进行后续操作。 即使我们实现 InterruptableJob并调用schedule
我已经执行了 2 个作业( MyJob1 和 MyJob2 ),如下所示: public async Task ScheduleJob() { await _jobManage
我是一名优秀的程序员,十分优秀!