调度器:
Quartz.Net中核心的地方就调度器,调度器负责管理Quartz.NET应用运行时环境。
上一节中代码中IScheduler sched = sf.GetScheduler(); 这一句代码看起来简单,其实背后做了好多事情,比如:初始化配置,是使用数据库还是内存,初始化线程池,是否是远程执行job等等,总之挺复杂的。
作业:
目前我的理解就是job,类似于上一节中自定义的MyJob
触发器:
用来告诉调度器作业什么时候触发.
解发器分为:SimpleTriggerImpl,CronTriggerImpl,DailyTimeIntervalTriggerImpl
具体的代码表现就是继承ITrigger这个接口。
如果只是简单的调度作业,比如每隔一小时执行一次哪么简单调度器(SimpleTriggerImpl)完全适合你,
如果您想指定工作日的每天的早上9点执行一个任务,复杂排程调度器(CronTriggerImpl)更为合适大家
复杂排程调度器采用Calendar-like表达式,
具体见:点我打表达式
例子
比如用复杂排程调度器写一个每天每天下午的 6点到6点59分每隔5s就触发一次的例子
1.雷同上一节的job:
- public class MyJob : IJob
- {
- publicvoid Execute(IJobExecutionContextcontext)
- {
- Console.WriteLine("我执行了,时间:{0}", DateTime.Now);
- }
- }
2.雷同上一节的main函数:
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactorysf = new StdSchedulerFactory();
- ISchedulersched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetailmyJob = JobBuilder.Create<MyJob>()
- .WithIdentity("job1", "group1")
- .Build();
- //触发器
- ITriggertrigger = TriggerBuilder.Create()
- .WithIdentity("trigger1", "group1")
- .WithCronSchedule("0/5 * 18 * * ? ")//这里用的复杂排程调度器
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
3.不一样上一节的运行结果:
结语:下载下来Quartz.Net的例子,发现Quartz实在是太实用了,有简单的任务,有状态job,可以执行远程的job,而且配置也很强大,忍不住想往下学……
代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Quartz.Impl;
- namespace Quartz.Demo
- {
- class MyClass
- {
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("job1", "group1")
- .Build();
- //触发器
- ITrigger trigger = TriggerBuilder.Create()
- .WithIdentity("trigger1", "group1")
- .WithCronSchedule("0/5 * 18 * * ? ")
- .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);
- }
- }
- }
- }
相关推荐
2、项目适用人群:计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等计算机相关专业的在校学生、专业老师、行业内企业员工下载使用。 3、项目可用于:项目本身具有较高的学习借鉴...
内容提要:什么是作业调度,作业调度为什么说是重要的,企业应用中的作业调度,非企业应用中的作业调度,作业调度与工作流,关于作业调度其他可选择方案 第二章. Quartz 起步 内容提要:本章对 Quartz 框架一个快速...
第2章 安装和创建数据库 43 2.1 了解Oracle数据库管理工具 44 2.1.1 Oracle Universal Installer 44 2.1.2 创建数据库和升级数据库的工具 48 2.1.3 发送即席SQL的工具:SQL*Plus和SQL Developer 48 2.1.4 ...
企业服务器和作业调度管理器:可以用该工具对数据库服务器进行管理,管理和监视服务器性能和活动;查询分析器:给出数据库查询语句的查询计划和执行时间,帮助用户分析查询过程,进行查询优化。等等。 4 实验报告 ...
第二章. Quartz 起步 第三章. Hello Quartz ( 第一部分)。 第四章. 部署 Job (第一部分) 第五章. Cron 触发器及相关内容 (第一部分) 第六章. Job 存储和持久化 (第一部分) 第八章. 使用 Quartz 插件 (第一部分) 第九...
第2章 关系数据库概念和SQL Server环境 2.1 数据库 2.1.1 关系数据库 2.1.2 数据库对象 2.1.3 什么是存储过程 2.2 SQL Server 2000的工具 2.2.1 Service Manage 2.2.2 Query Analyze 2.2.3 Enterprise Manage 2.2.4 ...
第2章 关系数据库概念和SQL Server环境 2.1 数据库 2.1.1 关系数据库 2.1.2 数据库对象 2.1.3 什么是存储过程 2.2 SQL Server 2000的工具 2.2.1 Service Manage 2.2.2 Query Analyze 2.2.3 Enterprise Manage 2.2.4 ...
第2章 安装和创建数据库 43 2.1 了解Oracle数据库管理工具 44 2.1.1 Oracle Universal Installer 44 2.1.2 创建数据库和升级数据库的工具 48 2.1.3 发送即席SQL的工具:SQL*Plus和SQL Developer 48 2.1.4 ...
第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述..... 18 2.1.5...
第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述......
第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述......
代码生成、网页静态化、基于JQuery的Web2.0页面开发、AJAX、SEO、网站调优、采集器、RSS/XML、网站防黑(防XSS攻击、防注入漏洞攻击、防CC攻击、防挂马、防盗链、敏感词过滤、广告帖智能过滤)、IIS管理与调优、流量...