Quartz.net 中的“DisallowConcurrentExecution”到底是啥意思

Posted

技术标签:

【中文标题】Quartz.net 中的“DisallowConcurrentExecution”到底是啥意思【英文标题】:What is exactly mean by 'DisallowConcurrentExecution' in Quartz.netQuartz.net 中的“DisallowConcurrentExecution”到底是什么意思 【发布时间】:2022-01-21 21:50:18 【问题描述】:

我有一个具有以下定义的 Quartz.net 作业。

    [PersistJobDataAfterExecution]
    [DisallowConcurrentExecution]
    public class AdItemsJob : IJob, IInterruptableJob
    

        public void Execute(IJobExecutionContext context)
         
         // Job execution logic,

        
   

因为我已经用 DisallowConcurrentExecution 属性修饰了 Job。 我对这个属性的了解是,我们不能同时运行同一个作业的多个实例。这里的多个实例是什么意思。?AddItemsJob的两个不同key的job叫同一个实例还是不同实例? 两个不同key的job可以同时执行吗?

【问题讨论】:

【参考方案1】:

作业实例是具有唯一键的作业。因此,拥有type AddItemsJob 的工作可以有两个实例,其键为 AddItemsJob.Admin 和 AddItemsJobs.Legacy。 并发保护来自每个作业键 - 如果使用重叠触发器定义上述两个作业,它们可以同时运行。 即使有多个触发器具有与其关联的重叠计划,在单个键后面定义单个作业也不会同时运行。

【讨论】:

谢谢马尔科!你的文章很有道理。

以上是关于Quartz.net 中的“DisallowConcurrentExecution”到底是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

Quartz.NET笔记 概述

Quartz.net 3.x使用总结——Db持久化和集群

Hosted Services+Quartz实现定时任务调度

Quartz.Net

Quartz.NET总结Quartz 远程调度

Quartz.Net学习笔记-简介