Quartz.NET学习笔记(一) 简介
Quartz.NET是一款开源的任务调度框架,他是由Java中的任务调度框架Quartz移植而来的。官方网站https://www.quartz-scheduler.net/。
Quartz.Net的特性
运行环境
- Quartz.NET可以寄宿在其他的.NET程序中运行
- Quartz.NET可以作为独立程序运行
- Quartz.NET可以在集群中使用,支持负载均衡和故障切换
任务调度
- 任务和触发器是多对一关系, 同一个任务可以绑定到多个触发器中,但是一个触发器只能绑定一个任务
- 触发器可以在某天特定时间触发
- 触发器可以在一周某一天触发(周一-周日)
- 触发器可以在一个月中某一天触发
- 触发器可以在一年某一天触发
- 触发器支持排除日期列表
- 触发器支持指定次数的重复触发
- 触发器支持无限次数的重复触发
- 触发器支持直到某个时间/日期重复触发
- 触发器支持一定时间间隔的重复触发
任务执行
- 所有的任务类都必须实现IJob接口
- 所有的定义的任务类都可以由NET实例化
- 当触发器触发,调度器会根据当前任务的状态通知所有JobListener和TriggerListener
- 当任务完成时,系统会返回一个任务完成码来通知调度器任务成功还是失败,调度器可以根据任务完成码做出不同的反应。
任务持久化
- 支持使用NET进行任务持久化
- 支持使用内存进行任务持久化
- 自定义持久化(实现IJobStore接口)
简单例子
首先我们先用一个简单例子,对Quartz.NET有一个大概的了解。
创建项目
打开Visual Studio, 创建一个简单的控制台程序
添加Quartz.NET库
我们可以从官网下载最新的Quartz.NET的库,但是使用Nuget来管理.NET库更便捷。
打开Package Manager Console,输入
install-package Quartz
添加第一个任务
添加一个新类FirstJob.cs, 其代码如下。
public class FirstJob : IJob
{
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("Hello World.");
}
}
所有的任务都必须实现IJob接口, IJob接口中只包含一个需要实现的方法Execute, 该方法中加入的代码,即这个任务需要干的事情。
创建调度器
在Program.cs的Main方法中加入以下代码
ISchedulerFactory schedFact = new StdSchedulerFactory(); IScheduler sched = schedFact.GetScheduler(); sched.Start();
这里使用的是抽象工厂模式, 使用默认的调度器工厂StdSchedulerFactory来创建一个调度器。所有的调度器都需要手动调用Start()方法来启动。
创建任务和触发器
在Main方法中继续添加以下代码
IJobDetail job = JobBuilder.Create<FirstJob>()
.WithIdentity("myJob", "group1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group1")
.StartNow()
.Build();
这里JobBuilder负责根据指定的任务类型产生一个任务项,并绑定任务需要的参数或者为任务进行分组。
TriggerBuilder负责产生不用类型的触发器,前面特性里面有说明,触发器有很多类型,都是在这里设置的,并且在这里可以对触发器进行分组。这里StartNow()表示触发器加入调度器后,立即执行。
使用调度器,绑定触发器和任务
前面我们只是创建了任务和触发器,他们之间现在还没有任何关联。
下面我们在Main方法中加入最后一行代码
sched.ScheduleJob(job, trigger);
调度器将触发器和任务绑定在一起。
最终实现效果
启动项目,效果如下, Hello World正确显示了

Quartz.NET学习笔记(一) 简介的更多相关文章
- Quartz.Net学习笔记(2)-简介
一.Quartz.Net是什么 1.来源 Quartz.Net是一个开源的作业调度框架: 2.下载地址 官网地址:http://www.quartz-scheduler.net/documentati ...
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- React学习笔记 - JSX简介
React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...
- CUBRID学习笔记 1 简介 cubrid教程
CUBRID 是一个全面开源,且完全免费的关系数据库管理系统.CUBRID为高效执行Web应用进行了高度优化,特别是需要处理大数据量和高并发请求的复杂商务服务.通过提供独特的最优化特性,CUBRID可 ...
- shiro学习笔记_0100_shiro简介
前言:第一次知道shiro是2016年夏天,做项目时候我要写springmvc的拦截器,申哥看到后,说这个不安全,就给我捣鼓了shiro,我就看了下,从此认识了shiro.此笔记是根据网上的视频教程记 ...
- Mybatis-Plus 实战完整学习笔记(一)------简介
第一章 简介 1. 什么是MybatisPlus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只 ...
- ElasticSearch学习笔记-01 简介、安装、配置与核心概念
一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...
- python学习笔记1--python简介和第一行代码编写
一.什么是python? python是一种面向对象,解释型语言,它语法简介,容易学习.本节博客就来说说本人学习python的心得体会. 二.python环境安装 目前python版本有python2 ...
- symfony学习笔记1—简介
1.symfony快速入门还是先看代码结构把,这个是拿到代码的第一印象,app/:整个应用的配置,模版,translations,这个可能是多语言文件什么,src/:项目php文件,vendor/:第 ...
随机推荐
- Hadoop优化
一.影响MR程序效率的因素 1.计算机性能: CPU.内存.磁盘.网络, 计算机的性能会影响MR程序的速度与效率 2.I/O方面 1)数据倾斜(代码优化) 2)map和reduce数量设置不合理(通过 ...
- 通过zuul修改请求参数——对请求参数进行解密
zuul是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用,Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架,Zuul 相当于是设备和 ...
- 如何优化UI布局?
Android系统中填充布局是一个开销巨大的过程,每一个额外的嵌套布局和包含的View,都直接影响到应用程序的性能和响应能力.为了使应用程序流畅地运行和快速地响应,重要的是尽可能地保持布局的简单和避免 ...
- go http
先看一个简单的 tcp 连接: // server ln, err := net.Listen("tcp", ":8000") if err != nil {} ...
- 虚拟机上的Ubuntu 文件系统成为只读模式的解决办法
虚拟机环境的Linux系统由于是虚拟化虚拟出来的主机环境,因此 经常会出现一些操作系统的问题,今天我遇到了一个Ubuntu操作系统文件系统成了只读模式,无法进行系统的操作,由于出问题的主机是我个人搭建 ...
- PHP调用微信wx_JSSDK录音并播放,
<?php require_once "jssdk.php"; $jssdk = new JSSDK("wx7a862ec806328ca2", &quo ...
- SpringMVC+Mybatis+MySQL8遇到的问题
搭建SpringMVC+Mybatis+MySQL8过程中遇到的坑. 1.数据库驱动要使用新版本,我的和mysql保持一致. 查看mysql版本:MySQL\bin>mysql -V 配置对应版 ...
- kodexplorer免费网盘安装教程
KodExplorer是什么? KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文件管理系统. 用户只需通过简单环境搭建,即可使用KodExplorer快速完成私有云/私有网盘 ...
- vue-router的学习
一.路由的概述. vue-router是vue.js官方的路由插件,它和vue.js是深度集成的,适用于构建单页面.vue的单页面应用是基于路由和组件的,路由是用于设定访问路径,并将路径和组件映射起来 ...
- vue 值的更新
用了vue开发了一段时间,基本上感觉都是比较好用的一个框架,刚开始还是会存在一些小坑的东西,这里先浅谈下值的更新问题. 1.本组件的一些变量,或者是主view(路由页面)一些值,是通过vuex 中st ...