quartz.net任务调度:源码及使用文档

前言

  前段时间把自己封装quartz.net 类库的过程总结到博客园,有网友想要看一下源码,所以就把源码传到github上去了,今天把地址分享给大家,程序中单元测试,写的太丑,所以就没网上传,故此我把使用文档在这也分享给大家一下,有什么问题,请点击我园子中的qq与我联系。

源码地址:https://github.com/kmonkey9006/Quatrz.Task

 目的:

  方便任务调度 的创建,删除,暂停与继续操作;提高任务在系统的可维护性与可扩展性。

使用流程:

     1.web.config设置时间间隔与开始时间(便于维护)

<!--自动任务执行时间间隔(秒)by wyl-->
    <add key="ReDoPaySchedulerTimeBySeconds" value="86400" />
    <!--自动任务执行 by wyl-->
    <add key="ReDoPaySchedulerStartTime" value="3:10"/>

   2.在使用处调用类库方法:

    2.1获取任务调度执行时间间隔与开始执行时间(这些值可以在代码中直接赋值)

 static int times = Convert.ToInt32(Synjones.Common.Config.Config.AppSettings("ReDoPaySchedulerTimeBySeconds"));
 static DateTime startTime = Convert.ToDateTime(Synjones.Common.Config.Config.AppSettings("ReDoPaySchedulerStartTime")).AddDays(1);

    2.2创建任务调度

new QJob("standardsd", "jobid", "轮询缴费", "XX").Handle(DoRePay).Start(startTime, times, 0);

    注:standardsd:系统编码(syscode)

             Jobid:任务id(jobid)

             轮询缴费:任务名称(name)

             山东大学:任务群组名称(group)

             DoRePay:任务调度触发动作。(action)

            startTime:任务开始时间(starttime)

             times:任务间隔时间(internaltimes)

             0:最大执行次数(0表示无限次)(maxtimes)    

  3.在不停止服务端的情况下暂停与继续任务

     修改任务持久化文件,默认地址为~/Files/jobs/

     当State为Working时表示任务正常执行

     当State为Pending/Empty时表示任务正常执行(注意大小写,写错则按Working执行)

调用说明:

调用说明

对象初始化

New QJob(string syscode, string id, string name = "", string group = "")

参数说明

Syscode:系统编码 Id:jobid Name:任务名称 Group:任务群组

其他说明

Syscode+jobid:标志者任务的唯一性 Name,group:可为空但建议写上,以便于更容易操作任务持久化文件 StartTime:开始时间默认为 DateTime.Now.AddMinutes(1) Maxtimes:最大执行次数默认为0 Internaltimes:时间间隔默认为1个小时

持久化文件存放地址赋值

JobFactory.Instance.SetPath(string path)

参数说明

文件路径必须以@“\”结尾,不进行赋值默认地址为~\File\jobs\

任务触发动作

Handle(Action handler)和Handle(Action<IQJob> handler)

参数说明

两者参数的却别在于一个有回调参数(IQJOB),一个没有参数

创建任务(1)

Start(DateTime starttime, int internaltimes , int maxtimes)

参数说明

Starttime:开始时间 internaltimes :任务执行间隔 maxtimes :最大执行次数

创建任务(2)

Start()

参数说明

直接执行创建job任务调度

移除任务

IQJob.Remove()

说明

根据IQJob进行删除(syscoed与jobid确定其唯一性)

暂停任务

IQJob.Pause()

说明

根据IQJob进行暂停(syscoed与jobid确定其唯一性)

继续任务

IQJob.Resume()

说明

根据IQJob进行Resume(syscoed与jobid确定其唯一性)

修改任务触发动作

JobFactory.Instance.Trigger(string system_code, Action action)  JobFactory.Instance.Trigger(string system_code, Action<IQJob> action)

参数说明

system_code:系统编码 Action:触发动作

持久化操作

JobFactory.Instance.Initialize();

说明

获取持久化文件,进行反序列化,然后把对象进行任务调度创建。

注意:

(1)系统编码和任务id组合必须唯一。

(2)开始执行时间最好在系统操作不频繁时间段(在服务平台和山东大学我用的是3:10)

(3)创建任务调度时,如果当前时间大于开始时间,任务在没创建之前就会事先执行一次。所以希望在创建任务的时候开始时间不要用datetime.now。用指定时间或者用DateTime.Now.AddMinutes(1)

(4)基于(3)的说明,开始时间如果指定为2016-06-06 3:10 ,当在这时间之后如果服务器down掉,重新启动系统时,不管是不是在3:10之后,系统均会执行一次

案例:

(1) new QJob("syscode", "jobid", "name", "group").Handle(job_handler).Start(DateTime.Now.AddSeconds(30), 2, 10);

 (2) new QJob("syscode", "jobid", "name", "group").Handle(job_detail_handler).Start();

(3) new QJob("syscode", "jobid", "name", "group").Remove();

(4) new QJob("syscode", "jobid").Remove();

(5) new QJob("syscode", "jobid", "name", "group").Pause();

(6) new QJob("syscode", "jobid").Pause();

(7) new QJob("syscode", "jobid", "name", "group").Resume();

(8) new QJob("syscode", "jobid").Resume();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐百川的学习频道

Python 日志输出

打印日志是很多程序的重要需求,良好的日志输出可以帮我们更方便的检测程序运行状态。Python标准库提供了logging模块,让我们也可以方便的在Python中打...

2019
来自专栏搜云库

Docker Compose 1.18.0 之服务编排详解

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过serv...

1997
来自专栏好好学java的技术栈

java工程师必备linux常用命令,这篇文章就够了

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)...

951
来自专栏偏前端工程师的驿站

让VIM支持Python2 by update-alternatives

前言  Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Pyt...

2078
来自专栏刘望舒

Android系统启动流程(一)解析init进程

前言 作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来...

1976
来自专栏北京马哥教育

Linux学习笔记:文件的权限

Linux 是一个多用户、多任务的系统,常常有多人同时使用一台机工作,为了保护每个人的隐私权,“文件所有者”的角色就显得相当重要了。当Linux用户登录系统之后...

3479
来自专栏电光石火

配置nginx.conf实现负载均衡

编辑/usr/local/nginx/conf/nginx.conf

1825
来自专栏李蔚蓬的专栏

Debugexperience about SQLite & LitePal:创建数据库闪退?注意小括号

在添加表/更改onUpgrade()之后,记得在调用的代码那里(下图第16行),更改第四个参数(version):

1074
来自专栏Laoqi's Linux运维专列

Linux入门到精pao通lu

1303
来自专栏xingoo, 一个梦想做发明家的程序员

[大数据之Sqoop] —— Sqoop初探

Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中。 Sqoop也...

2089

扫码关注云+社区