Quartz 是什么?

Quartz 是作业调度系统,可以集成进其他软件系统。这里【作业调度程序】一词是指,在预定义时间执行(或通知)其他组件的系统。

Quartz 有什么优点?

  • 灵活,有多种使用方式,可混合使用
  • 轻量,只需很少的配置
  • 容错性好
  • 具有持久化功能,程序重启时,可记住已计划的任务

Quartz的主要接口?

Quartz 以 dll 形式分发,主要接口有

  • Schedular 接口:它提供的功能有:调度/取消调度作业,开始,停止,暂停。
  • Job接口:用于自定义执行逻辑。
  • TriggerListener 或 JobListener 接口:用于接收通知。

为什么不使用 System.Timers.Timer?

  • Timer没有持久化机制
  • Timer的调度功能没有弹性,仅能定时触发
  • Timer不能利用线程池,每个Timer一个线程
  • Timer没有管理功能,需要自己组织任务

Quartz 的性能如何?

JobStore 影响性能:基于ADO.NET的JobStore性能不如基于RAM的JobStore,采用AdoJobStore时,大部分时间都花在数据库交互上,RAMJobStore比AdoJobStore快1000倍以上,但存储的作业和触发器数量没有AdoJobStore多。

侦听器影响性能:使用大量侦听器会降低quartz性能,例如,TriggerListener, JobListener和 SchedulerListener,一些插件实际上也是侦听器,例如历史插件。花在侦听器的时间没有用于实际作业。优先使用局部侦听器,而非全局侦听器。在侦听器中尽量不要执行昂贵操作。

Quartz能同时执行多少任务?

quartz能同时执行的作业数受线程池大小影响,例如,线程池中只有5个线程池时,最多可以执行5个任务。

如何控制作业对象的实例化?

参考 Quartz.Spi.IJobFactory 接口和 Quartz.IScheduler.JobFactory 属性。

如何使孤儿作业不被删除?

孤儿作业是指没有触发器引用的作业。将 JobDetail.Durable 属性设为true,可使quartz不删除孤儿作业。

如何禁止并发作业?

使用 DisallowConcurrentExecutionAttribute 可禁止作业并发执行。

如何停止正在执行的作业?

参考IJobExecutionContext 的 CancellationToken.IsCancellationRequested 属性。

如果组织链式作业?

  • 方法1,使用侦听器(例如 TriggerListener, JobListener 或 SchedulerListener) ,在完成时发出通知,开始下一个作业。
  • 方法2,在 JobDataMap 中指定下一个要触发的作业名,在作业完成时触发。

触发器为什么不触发?

  • 最常见原因是没有调用Scheduler.Start()方法
  • 其次是触发器或触发器组被暂停

IIS 中如何保持调度不停止?

IIS 会回收应用程序池,调度程序将停止。如果使用的IIS8,可配置IIS始终运行:

  • 网站:【预加载已启用】设为【True】
  • 应用程序池:【启动模式】设为【AlwaysRunning】

Quartz.net 的 FAQ的更多相关文章

  1. (5)Quartz学习

    原文:http://blog.csdn.net/zxl315/article/details/10879927 介绍Quartz Quartz是一个开源的任务调度系统,它能用来调度很多任务的执行. 运 ...

  2. spring-boot-2.0.3之quartz集成,不是你想的那样哦!

    前言 开心一刻 晚上回家,爸妈正在吵架,见我回来就都不说话了,看见我妈坐在那里瞪着我爸,我就问老爸“你干什么了惹我妈生这么大气?”  我爸说“没有什么啊,倒是你,这么大了还没有媳妇,要是你有媳妇给我们 ...

  3. Quartz框架多个trigger任务执行出现漏执行的问题分析--转

    原文地址:http://blog.csdn.net/dailywater/article/details/51470779 一.问题描述 使用Quartz配置定时任务,配置了超过10个定时任务,这些定 ...

  4. 一)get started with the Quartz project

    官网 http://www.quartz-scheduler.org/ 下载链接 http://www.terracotta.org/download/reflector.jsp?b=tcdistri ...

  5. Quartz 用 cron 表达式存放执行计划

    Quartz 用 cron 表达式存放执行计划.引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上. 1.Quartz cron 表达式支持七个域如下: 名称 是否 ...

  6. 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)

    很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...

  7. Quartz

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...

  8. Spring Quartz实现任务调度

    任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...

  9. topshelf和quartz内部分享

    阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows ...

随机推荐

  1. Cache Server

    [Cache Server] Whenever a source Asset like a .psd or an .fbx file is modified, Unity detects the ch ...

  2. ping,telnet,tracert分别用的是什么协议

    Telnet使用的是tcp协议使用示例:telnet 192.168.1.20 80 ping命令使用的是icmp协议示例:ping www.sina.com.cn或ping 192.168.1.10 ...

  3. 通过NBU还原数据库提示LINKING异常,无法恢复数据

    错误提示: 解决方法:

  4. LibreOJ 6282 数列分块入门 6(在线插入在线查询)

    题解:还是分块,将每个块存入vector,然后在插入的时候就是sqrt(n)级的重构,如果块太大了,暴力将这个块拆开. 代码如下: #include<cmath> #include< ...

  5. [leetcode]415. Add Strings字符串相加

    Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2 ...

  6. Spring框架之CGLIB的代理技术(代码了解)

    1.引入CBLIB的开发包 * 如果想使用CGLIB的技术来生成代理对象,那么需要引入CGLIB的开发的jar包,在Spring框架核心包中已经引入了CGLIB的开发包了.所以直接引入Spring核心 ...

  7. Spring框架中的工厂(了解)

    1. ApplicationContext接口 * 使用ApplicationContext工厂的接口,使用该接口可以获取到具体的Bean对象 * 该接口下有两个具体的实现类 * ClassPathX ...

  8. DOMNodeInserted监听div内容改变

    $('.cw-icon .ci-count').on('DOMNodeInserted',function(){ $(".settleup-content .cont_loading&quo ...

  9. 团队项目:二次开发--v.2.1--软件工程

    原先代码,对于基本对象的Get,Set方法构造函数等方法与实现基本功能的方法统一放到了一起,容易造成代码不清晰,别人比较难阅读的情况.而且其中代码冗余比较多. 改进代码,进行了层次的分析,将基本对象与 ...

  10. html转义字符对照表

    常用的html转义字符 字符 描述 实体名称 实体编号 " quotation mark(双引号“半角”) " " ' apostrophe (单引号‘半角’) & ...