上节中学到了quartz 如何解析corn-like 表达式,其实触发器中最核心的地方就是处理时间,
这一节让我们来了解下quartz中的触发器有哪些吧:
我想大家一定首先想到的就是处理corn-like的触发器吧,它就是CronTriggerImpl触发器,还是看一下类图,看看有多少触发器,和它们之间的关系吧
如上图,所有的触发器继承了ITrigger接口和AbstractTrigger这个抽象类,类图稍微有点乱,但大概也能看清它们的关系。
正如我们看到的,我们罗列一下上图的触发器吧:
CronTriggerImpl 使用corn-like表达式的一个触发器,触发时机比较容易定制
CalendarIntervalTriggerImpl 根据日历的时间间隔重复执行的一个触发器
DailyTimeIntervalTriggerImpl 根据每天重复的时间间隔
SimpleTriggerImpl 简单的触发器,比如只执行一次这样的
我们稍微看一下ITrigger这个接口,就会发现TriggerKey相当于触发器的一个主键,唯一标识一个触发器,并且一个触发器关联一个JobKey(相当于作业主键),比如还有GetNextFireTimeUtc()这样类似的接口方法,这个方法应该是得到下一次执行作业的时间。也就是一个触发器对应一个作业。
我们在用quartz的时候,对实例化上面哪些触发器是不可见的,是由TriggerBuilder这个类完成的。
可以看一下这些Builder类的结构是怎么的,如下图:
很明显一个触发器对应一个builder了。
下面我们就简单的SimpleScheduleBuilder来完成一个例子吧:
1:job代码:很简单输出当前时间
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- Console.WriteLine("我执行了,时间:{0}", DateTime.Now);
- }
- }
2:调度代码:
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("job1", "group1")
- .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:执行结果 间隔5s执行:
总结:认识了quartz中的触发器
全部代码:
- 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("job1", "group1")
- .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);
- }
- }
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- Console.WriteLine("我执行了,时间:{0}", DateTime.Now);
- }
- }
相关推荐
### 第八节:存储函数 类似于存储过程,但存储函数返回一个值。它们通常用于创建自定义的数据库计算逻辑。 ### 第九节:触发器 触发器是一种特殊类型的存储过程,会在特定的数据库事件(如INSERT, UPDATE, DELETE)...
**第八节:永久对象** - **定义**:永久对象是指那些在系统生命周期内一直存在的对象。这类对象通常用于保存系统状态或配置信息。 **第九节:主动对象** - **定义**:主动对象是那些能够自主执行某些任务的对象。...
电子技术
- **第八节:SmartMetrics 16位测试**: 描述了具体的16位延迟相关的测试方法。 - **第九节:其他SmartMetrics测试**: 探讨了除了16位测试外的其他SmartMetrics测试类型。 - **第十节:SmartMetrics测试结果**: 分析...
**第八课:安全性与权限** 本课将介绍SQL Server 2005的安全模型,包括用户、登录名、角色和权限的管理,以及如何设置访问控制以保护数据库资源。 **第九课:备份与恢复** 这节课将详细讲解SQL Server 2005的备份...
第八章: 无线防区扩充 24 无线防区公共特性 24 无线系统操作/监测 24 无线系统安装指南 24 安装配置 4281/5881 接收机 24 安装/连接 5800TM 模块 25 接收机识别码嗅探模式 26 5800 系列发射器安装 26 兼容的 5800 ...
`-S username`指定超级用户用于关闭触发器;`-T table`排除特定表;`-x`不导出权限信息;`-Z level`设置压缩级别。 4. **特殊输出模式**:`--column-inserts`和`--inserts`选项使数据以INSERT命令而非COPY命令的...
第八章:图像,位图,视频和声音(268) 8.1节. 载入并显示图像 8.2节. 创建视频显示 8.3节.Mp3文件的播放和暂停 8.4节. 为音频文件创建进度搜索条 8.5节. 融合两幅图像 8.6节. 将Convolution滤镜应用于图像 8.7节. ...
本节将详细解释蓝桥杯单片机比赛第八届国赛客观题中所涉及的知识点。 1. 欲提高电压比较器的抗干扰能力,应选用下列哪种类型的比较器? 在电路设计中,电压比较器是常用的电子元件。但是,电压比较器也容易受到...
9. 触发器: 触发器是预定义的SQL代码块,当特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。它们可以用来实现复杂的业务规则或维护数据的完整性。 10. 存储过程和函数: 存储过程是预编译的SQL...
##### 第21.1节 双稳态触发器 **21.1.7题** 题目描述:根据图1(a)的逻辑图及图1(b)所示相应的CP、RD和D的波形,尝试绘制出Q1端和Q2端的输出波形,假设初始状态Q1=Q2=0。 **解答要点**: - **理解触发器工作原理*...
**第一节 基础语法** 在SQL语言中,关键字和标识符扮演着至关重要的角色。关键字如`SELECT`, `UPDATE`等,是SQL中预定义的保留词汇,用于执行特定的操作。而标识符则是用于命名数据库中的各种对象,如表名、列名等...
电路的基本概念与基本定律第2章 线性电路分析方法 第3章 正弦交流稳态电路(1.2.3.4节)第3章 正弦交流稳态电路(5.6.7.8节)第4章 三相电路第5章 非正弦周期电流电路 第6章 线性电路的暂态过程 第7章 变压器第8章 ...
- 在第二种情况下,该存储单元的最后结果为8。 **2.** 本题讨论了数据移动过程中存储单元值的变化情况: - 当新值写入3号存储单元时,该单元的原始值被覆盖。 - 结果是:两个存储单元最后的值都是最初2号存储单元...
- **目标**:本节旨在介绍如何在Salesforce环境中创建自定义对象,这对于构建定制化的业务流程至关重要。 - **过程**: - 学习如何通过Salesforce界面创建一个新的自定义对象。 - 探讨如何为该对象定义字段、记录...
在第一级反相器上面增加了一个二极管,用来降低加在反相器上的有效电源电压,从而降低反相器的逻辑阈值。另一个反馈管Mf也可以用来改善第一级反相器输出高电平。 CMOS史密特触发器电路也是实现电平转换的接口电路,...
数据库基础是 Java 面试中经常出现的知识点,本节总结了数据库基础知识点,包括数据抽象、SQL 语言、视图、完整性约束、第三范式、ER 模型、索引、事务、锁、死锁、存储过程、触发器等。 一、数据抽象 * 物理抽象...
- **课程表**(课程表ID,班级ID,教师ID,星期,早读,第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节,第九节,自习),外键:班级ID,教师ID。 4. **存储过程** - **检查指定教师、指定节次...
例如,可以创建一张代表“第一章第一节”的幻灯片,接着是“第一章第二节”,然后是“第二章第一节”和“第二章第二节”。 3. **进入母版视图**:在“视图”菜单中选择“母版视图”,这将允许我们对模板的全局元素...