Net作业调度(一) -Quartz.Net入门 Quartz表达式生成器 [转]
背景
很多时候,项目需要在不同个时刻,执行一个或很多个不同的作业。
Windows执行计划这时并不能很好的满足需求了。 这时候需要一个更为强大,方便管理,集部署的作业调度了。
介绍
Quartz一个开源的作业调度框架,OpenSymphony的开源项目。Quartz.Net 是Quartz的C#移植版本。
它一些很好的特性:
1:支持集群,作业分组,作业远程管理。
2:自定义精细的时间触发器,使用简单,作业和触发分离。
3:数据库支持,可以寄宿Windows服务,WebSite,winform等。
实战
一:一些基础概念。
Scheduler 作业度器。
IJob 作业接口。 继承并实现Execute, 编写执行的具体作业逻辑。
JobBuilder 根据设置,生成一个详细作业信息(JobDetail)。
TriggerBuilder 根据规则,生产对应的Trigger
二:Nuget安装 PM> Install-Package Quartz 。
三:实例 (详细注释,不单独介绍)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
static void Main( string [] args) { //从工厂中获取一个调度器实例化 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); //开启调度器 //==========例子1(简单使用)=========== IJobDetail job1 = JobBuilder.Create<HelloJob>() //创建一个作业 .WithIdentity( "作业名称" , "作业组" ) .Build(); ITrigger trigger1 = TriggerBuilder.Create() .WithIdentity( "触发器名称" , "触发器组" ) .StartNow() //现在开始 .WithSimpleSchedule(x => x //触发时间,5秒一次。 .WithIntervalInSeconds(5) .RepeatForever()) //不间断重复执行 .Build(); scheduler.ScheduleJob(job1, trigger1); //把作业,触发器加入调度器。 //==========例子2 (执行时 作业数据传递,时间表达式使用)=========== IJobDetail job2= JobBuilder.Create<DumbJob>() .WithIdentity( "myJob" , "group1" ) .UsingJobData( "jobSays" , "Hello World!" ) .Build(); ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity( "mytrigger" , "group1" ) .StartNow() .WithCronSchedule( "/5 * * ? * *" ) //时间表达式,5秒一次 .Build(); scheduler.ScheduleJob(job2, trigger2); //scheduler.Shutdown(); //关闭调度器。 } |
1
2
3
4
5
6
7
8
9
10
|
/// <summary> /// 作业 /// </summary> public class HelloJob : IJob { public void Execute(IJobExecutionContext context) { Console.WriteLine( "作业执行!" ); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class DumbJob : IJob { /// <summary> /// context 可以获取当前Job的各种状态。 /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; string content = dataMap.GetString( "jobSays" ); Console.WriteLine( "作业执行,jobSays:" + content); } } |
其他
WithCronSchedule("") 强大的时间表达式。
WithSimpleSchedule(x) 一般够用了。
参考资源
Quartz.Net官方2.X教程 http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html
Quartz.Net开源地址 https://github.com/quartznet/quartznet
---------------------------------------------------------------------------------
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
Java版本的地址:http://www.quartz-scheduler.org/documentation,.Net版本的地址:http://quartznet.sourceforge.net/ 。
如果手工进行设置Crons表达式,比较繁琐,本文对之前网上提供的Java的Quartz表达生器源代码进行封装打包,
附件中可进行下载,具体如下图:
下载地址:Quartz表达式生成器
Net作业调度(一) -Quartz.Net入门 Quartz表达式生成器 [转]的更多相关文章
- Net作业调度(一) -Quartz.Net入门
背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源 ...
- Quartz.Net入门 - Net作业调度
背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源 ...
- Quartz.NET 入门
概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...
- Quartz.NET 入门(转)
概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...
- 转载:Quartz.NET 入门
分享自:http://www.cnblogs.com/jys509/p/4628926.html 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮 ...
- Quartz.NET 入门,带C#实例
概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...
- 【Quartz.NET】Quartz.NET 入门
概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...
- Quartz任务调度入门
Quartz任务调度入门 了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念 ...
- Java版的Quartz表达式生成器,同时适用于Quartz.net(免费下载)
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
随机推荐
- 【UOJ 117】欧拉回路
#117. 欧拉回路 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次. 一共两个子任务: 这张图是无向图.(50分) 输入格式 第一行一个整数 t, ...
- 【UOJ #112】【APIO 2015】Palembang Bridges
http://uoj.ac/problem/112 先扣掉在同一侧的情况. 当\(k=1\)时,桥建在所有位置的中位数. 当\(k=2\)时,对于每个居民\((S_i,T_i)\),这个居民只会走离\ ...
- SDOI 2017 Round1 解题报告
Day 1 T1 数字表格 题目大意 · 求\(\prod\limits_{i=1}^n\prod\limits_{j=1}^mFibonacci(\gcd(i,j))\),\(T\leq1000\) ...
- PHP 笔记——PDO操作数据库
一.简介 PHP 5.1可使用轻量级的统一接口 PDO(PHP Data Object,PHP数据对象)来访问各种常见的数据库.而使用PDO只需要指定不同的 DSN(数据源名称)即可访问不同的数据 ...
- luoguP3750 [六省联考2017]分手是祝愿 概率期望DP + 贪心
...........真的神状态了,没办法去想的状态................... 考试的时候选择$50$分贪心+$15$分状压吧,别的点就放弃算了........ 令$f[i]$表示从最小步 ...
- 【概率】【找规律】hdu6229 Wandering Robots
题意:一个机器人在正方形迷宫的左上角,迷宫里有些格子有障碍物,每一步机器人会等概率地向能走的格子转移(包含自身).问你无限长的时间之后,机器人处于矩形对角线的右下方的概率. 无限长时间意味着,起点没有 ...
- Ubuntu 12.04下spark1.0.0 集群搭建(原创)
spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.str ...
- poj 1984 并查集
题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...
- 机器学习中的 precision、recall、accuracy、F1 Score
1. 四个概念定义:TP.FP.TN.FN 先看四个概念定义: - TP,True Positive - FP,False Positive - TN,True Negative - FN,False ...
- iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET
iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET Weex