我有一个Quartz.net Job,其定义如下。
[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public class AdItemsJob : IJob, IInterruptableJob
{
public void Execute(IJobExecutionContext context)
{
// Job execution logic,
}
}
我用DisallowConcurrentExecution
属性装饰了作业
我对此属性的了解,我们无法同时运行同一作业的多个实例。这里的多个实例是什么意思。?
AddItemsJob
具有不同键的两个作业是否被称为相同实例或不同实例。?
具有不同密钥的两个作业是否可以同时执行。
答案 0 :(得分:14)
作业实例是具有唯一键的作业。因此,拥有 type AddItemsJob的作业可以有两个带有AddItemsJob.Admin和AddiItemsJobs.Legacy键的实例。并发保护来自每个作业密钥 - 如果使用重叠触发器定义上述两个作业,它们可以同时运行。
在单个密钥后面定义单个作业将不会同时运行,即使有多个触发器具有与之关联的重叠计划。