• .net core quartz job作业调度管理组件


      定时作业对于多数系统来说,都会用到,定时作业的实现方式可以有多种方式,简单的方式用Timer就可以实现,但是达不到通用的效果,本文采用Quartz基础组件来搭建一套企业通用的作业调度管理服务,希望对于有需求的朋友有所启发,望多多指正交流,项目地址:https://github.com/kuangqifu/CK.Sprite.Job

    Quartz API 的主要接口和类如下:

    1. IScheduler - 跟调度器交互的主要应用程序接口
    2. IJob - 你希望调度器执行的作业组件需要实现这个接口
    3. IJobDetail - 用来定义作业
    4. ITrigger - 定义指定作业的调度计划的组件
    5. JobBuilder - 用来定义/构建作业详情实例,并用来定义作业实例.
    6. TriggerBuilder - 用来定义/构建触发器实例

      核心的即为job和trigger,定时作业就是围绕这两个概念进行展开。

    数据库设计:

    设计说明:

    QuartzJobConfig表为作业核心表,包含了job和trigger的定义;HolidayCalendar为假期配置表。

    一个job对应一个trigger执行,这里对quartz中job和trigger之间的关系做了简化,现实中一个job对应多个trigger执行的情况比较少,及时存在这样的情况,多创建一条job配置执行即可。

    TriggerType(ETriggerType)触发器类型:

    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的设计思想,去掉了权限验证等功能。

      细节的地方就没有一一介绍了,直接看代码更容易理解。

  • 相关阅读:
    ms日期函数大全
    Sql server char,nchar,varchar与Nvarchar的区别
    clientX pageX
    jswindow对象的方法和属性资料
    Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名
    该行已经属于另一个表的解决方法
    dopostBack机制(转)
    js触发asp.net的Button的Onclick事件
    Value、ReadString、ReadContentAsString、ReadElementContentAsString 区别
    有关元素元素位置的属性
  • 原文地址:https://www.cnblogs.com/spritekuang/p/13812483.html
Copyright © 2020-2023  润新知