做为使用quartz的我们,其实最关心的就job,job里面会实现我们要执行的业务代码,相对于调度器触发器来讲,job相对简单一些。
先睹图为快:
我们继承IJob接口定义的job会被封装到JobDetailImpl中,JobDetailImpl还包括其它属性,比如唯一标识job的JobKey(如上图),可见记录job状态的JobDataMap(如上图),还有就是是否支持持久化,Ijob,等等一些其它的属性
至于IJobExecutionContext可以叫做job执行上下文,里面比如会有当前的触发器,当前作业,调度器这些东东。
当初始化IJobDetail的时候是用JobBuilder来完成的。
比如:IJobDetail myJob =JobBuilder.Create<MyJob>().WithIdentity("j1").Build();
前面几节大家已经会实现自己的job了,今天来实现一个能记录执行过程中的数据的job,很简单,直接看代码吧:
1:job代码(和旧版的写法不一样):
- [PersistJobDataAfterExecution]//保存执行状态
- [DisallowConcurrentExecution]//不允许并发执行
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- int exeCount = context.JobDetail.JobDataMap.GetInt("exeCount");
- Console.WriteLine("我执行了,时间:{0} 第{1}次执行", DateTime.Now, exeCount);
- context.JobDetail.JobDataMap.Put("exeCount", ++exeCount);
- }
- }
2:调度代码:
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("j1")
- .Build();
- //触发器,用的简单触发器,每隔5秒执行一次
- ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.RepeatForever().WithIntervalInSeconds(5))
- .WithIdentity("t1")
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
3执行结果 :
总结:进一步了解了作业原理。
全部代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Quartz.Impl;
- namespace Quartz.Demo
- {
- class Class5
- {
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("j1")
- .Build();
- //触发器,用的简单触发器,每隔5秒执行一次
- ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.RepeatForever().WithIntervalInSeconds(5))
- .WithIdentity("t1")
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
- }
- [PersistJobDataAfterExecution]//保存执行状态
- [DisallowConcurrentExecution]//不允许并发执行
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- int exeCount = context.JobDetail.JobDataMap.GetInt("exeCount");
- Console.WriteLine("我执行了,时间:{0} 第{1}次执行", DateTime.Now, exeCount);
- context.JobDetail.JobDataMap.Put("exeCount", ++exeCount);
- }
- }
相关推荐
赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...
赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...
在第一个案例中,我们将利用Quartz2D创建一个水印效果。水印常常被用作保护图像版权或添加标识。使用Quartz2D,我们可以自定义水印文本、位置、透明度以及旋转角度。首先,我们需要在画布上创建一个CGContext对象,...
Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务处理能力。在Spring框架中,Quartz可以被集成来实现复杂的定时任务调度。本文将深入探讨Quartz的使用,包括其基本概念、配置、API以及在Web...
1. **作业(Job)**:在Quartz.NET中,作业代表你需要执行的业务逻辑。你可以创建一个类并实现`IJob`接口,然后在`Execute`方法中编写具体的业务代码。作业是无状态的,每次触发都会创建一个新的实例执行。 2. **...
Quartz 是个开源的作业调度框架,为在Java 应用程序中进行作业调度提供了简单而强大的机制。Quartz 允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。...
- **持久化存储**:Quartz支持将作业和触发器的信息存储在数据库中,确保即使服务重启也能继续执行定时任务。 - **复杂的触发规则**:除了基本的时间间隔触发外,还支持复杂的日期模式触发。 ### 总结 Quartz作为一...
赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...
Quartz作业调度器是一款强大的开源任务调度框架,广泛应用于Java应用程序中,用于执行定时和周期性的任务。在与Spring框架整合后,它能够提供更加灵活和便捷的任务调度能力,极大地扩展了Spring的功能。 Quartz的...
Quartz 2.2.1 是一个功能丰富的Java作业调度框架,它允许开发人员在应用程序中安排任务执行,实现复杂的定时任务逻辑。这个开源项目旨在提供一个简单、可扩展且可靠的解决方案,使得开发者能够轻松地将定时任务集成...
- **持久化**:Quartz 可以将作业和触发器存储在数据库中,确保在服务器重启后仍能恢复调度状态。 - **集群支持**:多个 Quartz 节点可以组成集群,共享任务调度,提供高可用性。 2. **Quartz 配置** - **...
赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...
Quartz是一个功能丰富的开源作业调度器,可以用于Java应用程序中的作业调度。它支持触发器、作业、日历等功能,并且能够根据复杂的Cron表达式来定义作业的执行时间。本文将详细介绍如何在Spring中配置Quartz以及...
Quartz是一款广泛应用于Java环境中的开源作业调度框架,它的核心功能是实现任务的自动化执行,如定时触发、周期性执行等。Quartz以其强大的灵活性和稳定性,在企业级应用中占据了重要地位,尤其对于需要定时执行任务...
Quartz是一款广泛应用于Java环境中的开源任务调度框架,它提供了高度可配置的作业调度系统,使得开发者能够轻松地在应用程序中实现定时任务的管理。Quartz的核心特性包括但不限于以下几点: 1. **灵活的调度**:...
9. **持久化**: 为了在应用重启后仍能保持作业计划,Quartz支持将Job和Trigger存储在数据库中。这样,即使应用崩溃,当再次启动时,调度器会自动恢复之前的状态。 10. **API与版本兼容性**: Quartz提供了丰富的API...
- **入门指南**:介绍如何引入Quartz库到项目中,创建第一个Job和Trigger的基本步骤。 - **核心概念**:详细讲解Job、Trigger、Calendar、Scheduler等核心概念,以及它们之间的关系。 - **任务实现**:解释如何...
赠送jar包:quartz-1.6.1.jar 赠送原API文档:quartz-1.6.1-javadoc.jar 包含翻译后的API文档:quartz-1.6.1-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.opensymphony.quartz,...
1. 作业(Jobs):Quartz中的核心元素,代表要执行的任务。每个作业是一个实现了`org.quartz.Job`接口的类。 2. 触发器(Triggers):负责调度作业何时运行。触发器有多种类型,如简单触发器、cron触发器等。 3. 调度器...
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...