27.0 定时调度Quartz
1 nuget添加引用
2 三大核心对象:
IScheduler:单元/实例,在这里去完成定时任务的配置
只有单元启动,里面的作业才能正常运行
IJob:任务,定时执行动作就是Job
ITrigger:定时策略
就可以完成基本的定时任务
3 传参数问题
a)jobDetail.JobDataMap.Add
b) trigger.JobDataMap.Add
c) 要注意,使用MergedJobDataMap有覆盖,后者为准
4 为啥是job+trigger(更灵活)
拆分真的挺好,方便复用,一个job绑定多个trigger
刚才的传参数,就也应该分开一下
归档数据的任务(业务表+归档表--把30天之前的数据都移到归档表)
订单表(30天)---死循环Task--检查日期---做一次归档
物流表(60天)---死循环Task--检查日期---做一次归档
。。。。100个类似需求
希望作业能通用,表不一样,操作差不多,job完成通用逻辑
需要业务表+归档表,这个由IJobDetail传递参数来确定
不同的detail可能频率不同,所以拆分成2个
执行频率不同的,就需要不同的trigger,这个时候可能条件是不一样的
按天执行,就只检测day;
按小时执行,就得细致到Hour;
按分钟执行,会细致到minute
所以trigger也得传参数
5 常用Trigggr:
SimpleTrigger:从什么时间开始,间隔多久执行重复操作,可以限制最大次数
Cron:表达式的方式,可以灵活订制时间规则(详情见文档)
6 Listener框架的各个环节--事件能做的监听
CustomSchedulerListener
CustomTriggerListener
CustomJobListener
7 LogProvider可以展示框架运行的一些信息