.net core quartz job作业调度管理组件
定时作业对于多数系统来说,都会用到,定时作业的实现方式可以有多种方式,简单的方式用Timer就可以实现,但是达不到通用的效果,本文采用Quartz基础组件来搭建一套企业通用的作业调度管理服务,希望对于有需求的朋友有所启发,望多多指正交流,项目地址:https://github.com/kuangqifu/CK.Sprite.Job。
Quartz API 的主要接口和类如下:
- IScheduler - 跟调度器交互的主要应用程序接口
- IJob - 你希望调度器执行的作业组件需要实现这个接口
- IJobDetail - 用来定义作业
- ITrigger - 定义指定作业的调度计划的组件
- JobBuilder - 用来定义/构建作业详情实例,并用来定义作业实例.
- TriggerBuilder - 用来定义/构建触发器实例
核心的即为job和trigger,定时作业就是围绕这两个概念进行展开。
数据库设计:
设计说明:
QuartzJobConfig表为作业核心表,包含了job和trigger的定义;HolidayCalendar为假期配置表。
一个job对应一个trigger执行,这里对quartz中job和trigger之间的关系做了简化,现实中一个job对应多个trigger执行的情况比较少,及时存在这样的情况,多创建一条job配置执行即可。
TriggerType(ETriggerType)触发器类型:
- Simple,简单触发器,只处理间隔时间执行的job,例如:每隔多少秒/分钟/小时执行job(使用SimpleIntervalUnit和SimpleIntervalValue字段)
- Cron,通用触发器,类似linux下crontab,能定义所有条件trigger,参见:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/crontrigger.html#introduction,(使用CronConfig字段)
- At,具体时间点作业
HolidayCalendarId,假期配置:
假期表外键,这里没有采用通用一个假期配置,可能存在不同工种假期不同情况,所以设计分开。
JobExecType,Job执行类型:
- API,ExecLocation地址为URL,配合Params字段一起使用
- Reflect,反射执行,执行job的执行类信息定义
- 其他,微服务等,配合ExecLocation和Params一起定义
类设计:
JobManager,quartz调度管理
主要直接与quartz提供的api打交道,程序启动、新建job配置、修改job配置、删除job配置时根据配置信息调用quartz中相应的api,另外开放出暂停恢复job等功能。
JobManagerService,job管理
数据库job配置与quartz组件同步管理,管理数据库job配置时候,同步管理quartz中job信息,可以实现通过界面api管理job配置时,同步管理quartz中的job调度。
CallAPIJob
通过http调用远程接口
CallReflectJob
从DataMap中获取execlocation信息,获取真正执行任务的类(从依赖注入中获取实例对象),传入参数,执行Job
关于代码说明:
CK.Sprite.Framework是采用Dapper根据DDD设计思想搭建的一套简易版本的框架,借鉴了一些abp的设计思想,去掉了权限验证等功能。
细节的地方就没有一一介绍了,直接看代码更容易理解。
.net core quartz job作业调度管理组件的更多相关文章
- .NET Core开源Quartz.Net作业调度框架实战演练
一.需求背景 人生苦短,我用.NET Core!作为一枚后端.NET开发人员,项目实践常遇到定时Job任务的工作,在Windows平台最容易想到的的思路Windows Service服务应用程序,而在 ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Quartz.NET作业调度框架详解(转)
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- .net Quartz 服务 作业调度
.net项目中使用Quartz (1)在web.config中进行相关配置 <configSections> <section name="quartz" t ...
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- [转].NET Core中的认证管理解析
本文转自:http://www.cnblogs.com/durow/p/5783089.html 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用 ...
- 用Quartz进行作业调度(转)
概述 各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务. 对于一个典型的MIS系统来说,在每 ...
- Agile.Net 组件式开发平台 - 脚本管理组件
脚本管理组件用于管理系统查询脚本,由于数据查询的复杂性和可变性,平台规范要求使用查询使用建立在脚本管理器中的SQL语句.新增.更新.删除数据采用数据访问支持库API. 示例如下: 首先在脚本管理器中定 ...
- Agile.Net 组件式开发平台 - 内核管理组件
敏捷开发体系 软件构件技术:所谓软件构件化,就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装.软件的构件化和集成技术的目标是:软件系统可以由不同厂商提供的,用不同语言开发 ...
随机推荐
- 【转】Centos7系统下忘记了root管理员账号密码的解决方式
哎,事情的起因就是脑子背了,曾经还手贱把root密码改了,导致普通账户改不回管理员账号了,然而,这次是百毒"救"了我,最终完美修改了root密码,好文章特地转载过来了,侵权删. 原 ...
- hasmap hashtable
hashMap和hashtable方面的知识点吧: 1. 关于HashMap的一些说法: a) HashMap实际上是一个"链表散列"的数据结构,即数组和链表的结合体.HashMa ...
- 基于SSM框架的JavaWeb通用权限管理系统
- - ->关注博主公众号[C you again],获取更多IT资源(IT技术文章,毕业设计.课程设计系统源码,经典游戏源码,HTML网页模板,PPT.简历模板,!!还可以投稿赚钱!!,点击查 ...
- 《JavaScript高级程序设计》——第四章 变量、作用域和内存管理
JavaScript变量可以用保存两种类型的值:基本类型值和引用类型值.基本类型的值源自以下基本类型数据:Undefined.Null.Boolean.Number和String. 从一个变量向另一个 ...
- 【转】Loading PNGs with SDL_image
FROM:http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/index2. ...
- DTU是什么 常见的DTU有哪些
DTU也叫数据传输终端,它的主要功能是把远端设备的数据通过无线的方式传送回后台中心,想要完成数据的传输就需要建立一套完整的数据传输系统.DTU是一种现代物联网行业广泛使用的无线数据终端,利用公用运营商 ...
- 【Jmeter】第一个接口测试案例
测试步骤如下: 1.测试计划 2.线程组 3.HTTP Cookie管理器 4.Http信息头管理 5.Http请求默认值 6.Sampler(HTTP请求) 7.断言 8.监听器(查看结果树.图形结 ...
- 常用-DNS
1.1.1.1 cloudflare 1.0.0.1 119.29.29.29 腾讯 114.114.114.114 114.114.115.115 114.114.114.119财务 114.114 ...
- 【Kata Daily 190920】Square(n) Sum(平方加总)
题目: Complete the square sum function so that it squares each number passed into it and then sums the ...
- 基于YOLO-V2的行人检测(自训练)附pytorch安装方法
声明:本文是别人发表在github上的项目,并非个人原创,因为那个项目直接下载后出现了一些版本不兼容的问题,故写此文帮助解决.(本人争取在今年有空的时间,自己实现基于YOLO-V4的行人检测) 项目链 ...