原文:
【Quartz】问题记录注意事项【四】
记录一:queartz 在同时启动多个任务是,触发器名称不能设置一致,不然第二次启动会不成功
记录二:quartz 在使用任务与触发器分离写法时,任务必须要带(.StoreDurably())
IJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("HelloJob", "group1") .StoreDurably() .Build(); sched.AddJob(job, true);
记录三:quartz在使用持续化到数据库是恢复有时候会失败建议加((.RequestRecovery))
IJobDetail job = JobBuilder.Create<ServerJob>() .WithIdentity("ServerJob", "group1") .RequestRecovery() .Build();
这样失败后会重新执行。
记录四:quartz使用持续化到数据库可分为有状态和无状态。区分在任务类上增加【PersistJobDataAfterExecution】特性
记录五:quartz使用持续化到数据库设置不可并发在任务类上增加【DisallowConcurrentExecution】特性。
[PersistJobDataAfterExecution] //代表当前任务是否有状态 [DisallowConcurrentExecution]//代表任务不允许并发 public class ServerJobState : ServerJob { }
记录六:一个job可以关联多个 trigger ,但是一个 trigger 只能关联一个job。
记录七:数据库QRTZ_JOB_DETAILS表其中字段增加解释:
//DESCRIPTION:描述 //IS_DURABLE:代表是否持久化 //IS_NONCONCURRENT:是否运行并发 //IS_UPDATE_DATA:是否有状态:false 无状态,true有状态 //REQUESTS_RECOVERY:是否执行恢复对应设置RequestRecovery方法
记录八:数据库QRTZ_TRIGGERS表字段部分解释:
借鉴地址:https://www.cnblogs.com/skyLogin/p/6915921.html
//DESCRIPTION: 触发器的描述等基本信息, //START_TIME :开始执行时间, //END_TIME :结束执行时间, //PREV_FIRE_TIME: 上次执行时间, //NEXT_FIRE_TIME: 下次执行时间, //TRIGGER_TYPE: 触发器类型:simple和cron, //TRIGGER_STATE: 执行状态:WAITING,PAUSED,ACQUIRED分别为:等待,暂停,运行中
记录九:分用户启动可以设置不同的调度器名称来自动各自用户的任务。这样就不是在一个调度下工作。