2014-04-30 14 views
8

Ich habe einen Quartz.net Job mit der folgenden Definition.Was genau bedeutet "DisallowConcurrentExecution" in Quartz.net

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

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

     } 
    } 

Als ich den Job mit DisallowConcurrentExecution Attribut eingerichtet haben.
Was ich über dieses Attribut weiß, können wir nicht mehrere Instanzen desselben Jobs zur gleichen Zeit ausführen. Was ist hier mit mehreren Instanzen gemeint?
Werden die beiden Jobs AddItemsJob mit unterschiedlichen Schlüsseln die gleichen Instanzen oder unterschiedliche Instanzen aufgerufen?
Können zwei Jobs mit unterschiedlichen Schlüsseln gleichzeitig ausgeführt werden?

Antwort

11

Ein Job Instanz ist ein Job mit einem eindeutigen Schlüssel. So einen Job von Typ AddItemsJob kann zwei Instanzen mit den Schlüsseln AddItemsJob.Admin und AddiItemsJobs.Legacy haben. Der Concurrency-Schutz kommt per Jobschlüssel - die zuvor genannten zwei Jobs können gleichzeitig ausgeführt werden, wenn sie mit überlappenden Triggern definiert wurden.

Ein hinter einem einzelnen Schlüssel definierter einzelner Job würde nicht gleichzeitig ausgeführt, auch wenn mehrere Trigger überlappende Zeitpläne zugeordnet hätten.

+0

Danke Marko! Ihr Aufsatz macht Sinn. – Ishtiaq