当前位置:
首页 > Python基础教程 >
-
C#教程之Quartz.net 的 FAQ
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】
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式