【Quartz】问题记录注意事项【四】

时间:2021-08-14 13:06:00

记录一: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分别为:等待,暂停,运行中

记录九:分用户启动可以设置不同的调度器名称来自动各自用户的任务。这样就不是在一个调度下工作。