回到目录

任务调度组件

  1. 位于Scheduling目录
  2. 基类JobBase,所有JOB都派生自它,重写Cron属性可以修改调度周期
  3. 支持单次JOB,即执行完成后马上停止
  4. 支持对外API接口,以便获取和修改JOB的列表的状态

源代码展现

自定义Job在继承JobBase之后,可以设置自动的名称,调度周期,是否单次,

和执行过程.

  public abstract class JobBase : ISchedulingJob
 {
/// <summary>
/// 执行计划,除了立即执行的JOB之后,其它JOB需要实现它
/// </summary>
public abstract string Cron { get; } /// <summary>
/// 是否为单次任务,黑为false
/// </summary>
public virtual bool IsSingle => false; /// <summary>
/// Job的名称,默认为当前类名
/// </summary>
public virtual string JobName => GetType().Name; /// <summary>
/// Job具体类去实现自己的逻辑
/// </summary>
protected abstract void ExcuteJob(IJobExecutionContext context); public Task Execute(IJobExecutionContext context)
{
try
{
Console.WriteLine(DateTime.Now.ToString() + "{0}这个Job开始执行", context.JobDetail.Key.Name);
ExcuteJob(context);
}
catch (Exception ex)
{
Console.WriteLine(this.GetType().Name + "error:" + ex.Message);
} return Task.CompletedTask;
} }

支持新Job自动装载

我们新添加的job,可以与当前job并行,你在新的项目中添加job之后,把它

复制到调度中心程序后,中心程序的发现机制会把新地Job装载到时队列里,

在新的周期到来时候,去动态执行!

 var watcher = new FileSystemWatcher
{
Path = AppDomain.CurrentDomain.BaseDirectory,
NotifyFilter = NotifyFilters.Attributes |
NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.Security |
NotifyFilters.Size,
Filter = "*.dll"
};
watcher.Created += new FileSystemEventHandler((o, e) =>
{
foreach (var module in Assembly.LoadFile(e.FullPath).GetModules())
{
foreach (var type in module.GetTypes().Where(i => typeof(ISchedulingJob).IsAssignableFrom(i)))
{
JoinToQuartz(type, DateTimeOffset.Now);
}
}
});

Demo的设计很简单,只要实现JobBase的属性和方法即可,下面的Job为每分钟执行一次

 public class HelloJob : JobBase
{
public override string Cron => "0 0/1 * * * ?";
protected override void ExcuteJob(IJobExecutionContext context)
{
Console.WriteLine("hello");
}
}

待续……

回到目录

LindDotNetCore~Scheduling任务调度模块的介绍的更多相关文章

  1. LindDotNetCore~基于模块化注入的介绍

    LindDotNetCore相关介绍 相关模块 全局都是依赖DI 消息队列 NoSql Caching 仓储 服务总线 Solr 调度 日志 Asspect拦截组件 UAA授权 各种组件环境的搭建 各 ...

  2. Linux进程管理专题

    Linux进程管理 (1)进程的诞生介绍了如何表示进程?进程的生命周期.进程的创建等等? Linux支持多种调度器(deadline/realtime/cfs/idle),其中CFS调度器最常见.Li ...

  3. 现在的 Linux 内核和 Linux 2.6 的内核有多大区别?

    作者:larmbr宇链接:https://www.zhihu.com/question/35484429/answer/62964898来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  4. LindDotNetCore~框架介绍及特色功能(有点springboot的意思)

    LindDotNetCore模块介绍 大叔博客 LindDotNetCore相关模块介绍 [x] 全局都是依赖DI [x] 消息队列 [x] NoSql [x] Caching [x] 仓储 [x] ...

  5. LindDotNetCore~授权中间件的介绍

    回到目录 LindDotNetCore中间件 大叔认识中间件就是主要对http请求进行拦截,然后添加具体个性化功能的逻辑,这种把请求切开,添加新逻辑的方式一般称为面向方面的逻辑AOP! 授权中间件 请 ...

  6. RR调度(Round-robin scheduling)简单介绍

    在RR调度策略下,一个线程会一直运行.直到: 自愿放弃控制权 被更高优先级的线程抢占 时间片用完 例如以下图所看到的,A在用完自己的时间片后,将CPU运行权让给线程B.于是A离开Read队列,而B进入 ...

  7. Hadoop基础——第一弹:Hadoop介绍

    一.基础 1.了解Java.Linux操作系统相关知识 2.如需精进,应为水平要达到一定标准,能够阅读国外相关技术网站,eg:http://hadoop.apache.org/ 二.什么是Hadoop ...

  8. Puppet自动化运维-资源介绍篇(4)

    1.什么是资源? 资源是Puppet最基础的元素,每个资源的定义都具有标题,类型,以及一系列的属性. 资源定义有如下的特性:   (1) Puppet使用title在编译时区分每个资源,使用命名变量在 ...

  9. [翻译] AKKA笔记- ACTORSYSTEM (配置CONFIGURATION 与调度SCHEDULING) - 4(一)

    原文在http://rerun.me/2014/10/06/akka-notes-actorsystem-in-progress/ 像我们前面看到的,我们可以用ActorSystem的actorof方 ...

随机推荐

  1. IntelliJ IDEA 配置maven

    以下内容引自http://blog.csdn.net/qq_32588349/article/details/51461182. 使用IntelliJ IDEA 配置Maven(入门)         ...

  2. backend_queue.go

    package nsqd // BackendQueue represents the behavior for the secondary message // storage system typ ...

  3. bzoj 2759一个动态树好题

    真的是动态树好题,如果把每个点的父亲设成p[x],那么建出来图应该是一个环套树森林,拆掉一条边,就变成了动态树,考虑维护什么,对于LCT上每个节点,维护两组k和b,一组是他到他父亲的,一组是他LCT子 ...

  4. MIUI目前为止最简单安装谷歌服务框架教程

    安装谷歌服务框架方法有很多,比如用第三方 rec卡刷gapps包.用第三方工具安装......然而这些对于新手来说还是比较难的! 我今天说的方法可以说是最简单的:1.不需要修改文件:2.不需要借助第三 ...

  5. 啥?客户叫在DataGridView的左上角添加CheckBox?

    效果图是这样的,如何把CheckBox放到左上角是最重要的. 添加方法 InitColumnInfo() 方法,代码如下. private void InitColumnInfo() { ; Data ...

  6. 个人简历模板web

    根据自己以前使用的简单简历表格,对其进行了web前端还原,也算对自己初步学习知识的一个小小的记录. 下面是简历预览效果,很简洁的那种: 代码中没什么太困难的地方,主要记录下自己遇到的几个小问题吧: 1 ...

  7. java之servlet入门操作教程一续

    本节主要是在java之servlet入门操作教程一  的基础上使用myeclipse实现自动部署的功能 准备: java之servlet入门操作教程一 中完成myFirstServlet项目的创建: ...

  8. 第1章 发现端点(Discovery Endpoint) - IdentityModel 中文文档(v1.0.0)

    OpenID Connect发现端点的客户端库作为httpclient的扩展方法提供.该GetDiscoveryDocumentAsync方法返回一个DiscoveryResponse对象,该对象具有 ...

  9. 【swoole】如果使用好定时器功能

    swoole中提供了一个定期器的用法 $server->tick(1000, function() use ($server, $fd) { $server->send($fd, &quo ...

  10. 同事搭一个测试RAC说节点2发现idle了,报ORA-00304

    [oracle@testrac2 11204]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 16 1 ...