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. git pull 免密

    linux下 在~/下, touch创建文件 .git-credentials, 用vim编辑此文件,输入内容格式: touch .git-credentials vim .git-credentia ...

  2. for循环语句输出菱形

    for(int a = 5; a > 0 ; a--){ for(int b = 1; b <= a; b++){ System.out.print(" "); } f ...

  3. ThreadPoolExecutor的execute源码分析

    上一篇文章指出,ThreadPoolExecutor执行的步骤如下: 向线程池中添加任务,当任务数量少于corePoolSize时,会自动创建thead来处理这些任务: 当添加任务数大于corePoo ...

  4. Python3 ord() 函数

    Python3 ord() 函数  Python3 内置函数 描述 ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数 ...

  5. Python3 exec 函数

    Python3 exec 函数  Python3 内置函数 描述 exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码. 语法 以下 ...

  6. Windows系统之hosts文件

    对于Hosts文件相信很多Win7的系统用户会比较陌生,其实Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,所以功 ...

  7. 鼠标滑过图片添加边框图片无位移[xyytit]

    实现下面的效果,鼠标滑过图片添加边框图片无位移——鼠标滑过,图片只是加了边框,不会晃动: 参考代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  8. C++,坑...

    如果使用const全局变量,记得声明处的引用处都加extern. uint32_t等,t代表是typedef的,在stdint.h头文件里,C99后引入,记得先测试再用. accept函数的参数,记得 ...

  9. python 安装scikit!!!

    首先,吐槽一下,真的是折腾好几天,一会更新这个,一会更新那个,总是各种奇葩问题诸如此类: cannot import check-build pip有新版本,需要更新(黄字) 其中scipy出错最多, ...

  10. Django的cookie学习

    为什么要有cookie,因为http是无状态的,每次请求都是独立的,但是我们还需要保持状态,所以就有了cookie cookie就是保存在客户端浏览器上的键值对,别人可以利用他来做登陆 rep = r ...