2016-10-05 2 views
0

Мы 3 quartz.net (версия 2.3.3) Работы конфигурируются с помощью XML-файлаquartz.net 2,0 работы не выполняется параллельно

IInterruptableJob Job1Class обозначенного DisallowConcurrentExecution и используется оба Job1 & Job2 (конечно с разными заданиями) в xml-файле.

IInterruptableJob Job3Class используется Job3 в XML-файле.

quartz.threadPool.threadCount устанавливается в 6 через конфигурационный файл.

Из работы 3, работа длительная, и мы требуем, чтобы все 3 задания выполнялись параллельно, но много раз мы наблюдали, что они не выполняются параллельно. Так почему он не выполняется параллельно.

Ниже приведен пример файла xml.

<?xml version="1.0" encoding="utf-8" ?> 
<job-scheduling-data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://quartznet.sourceforge.net/JobSchedulingData" version="2.0"> 
    <schedule> 
    <job> 
     <name>Job1</name> 
     <group>JobGroup</group> 
     <job-type>Some.Job1.Class, Some.Job1.Class.Assembly</job-type> 
     <durable>false</durable> 
     <recover>false</recover> 
     <job-data-map> 
     <entry><key>keys</key><value>values</value></entry> 
     </job-data-map> 
    </job> 
    <trigger> 
     <simple> 
     <name>Job1Trigger1</name> 
     <group>Triggers</group> 
     <job-name>Job1</job-name> 
     <job-group>JobGroup</job-group> 
     <start-time-seconds-in-future>1</start-time-seconds-in-future> 
     <repeat-count>0</repeat-count> 
     <repeat-interval>1</repeat-interval> 
     </simple> 
    </trigger> 
    <trigger> 
     <cron> 
     <name>Job1Trigger2</name> 
     <group>Triggers</group> 
     <job-name>Job1</job-name> 
     <job-group>JobGroup</job-group> 
     <cron-expression>0 0/1 * * * ?</cron-expression> 
     </cron> 
    </trigger> 
    <job> 
     <name>Job2</name> 
     <group>JobGroup</group> 
     <job-type>Some.Job1.Class, Some.Job1.Class.Assembly</job-type> 
     <durable>false</durable> 
     <recover>false</recover> 
     <job-data-map> 
     <entry><key>keys</key><value>values</value></entry> 
     </job-data-map> 
    </job> 
    <trigger> 
     <simple> 
     <name>Job2Trigger1</name> 
     <group>Triggers</group> 
     <job-name>Job2</job-name> 
     <job-group>JobGroup</job-group> 
     <start-time-seconds-in-future>1</start-time-seconds-in-future> 
     <repeat-count>1</repeat-count> 
     <repeat-interval>1</repeat-interval> 
     </simple> 
    </trigger> 
    <trigger> 
     <cron> 
     <name>Job2Trigger2</name> 
     <group>Triggers</group> 
     <job-name>Job2</job-name> 
     <job-group>JobGroup</job-group> 
     <cron-expression>0 0 2 1/1 * ? *</cron-expression> 
     </cron> 
    </trigger> 
    <job> 
     <name>Job3</name> 
     <group>JobGroup</group> 
     <job-type>Some.Job3.Class, Some.Job3.Class.Assembly</job-type> 
     <durable>false</durable> 
     <recover>false</recover> 
     <job-data-map> 
     <entry><key>keys</key><value>values</value></entry> 
     </job-data-map> 
    </job> 
    <trigger> 
     <simple> 
     <name>Job3Trigger1</name> 
     <group>Triggers</group> 
     <job-name>Job3</job-name> 
     <job-group>JobGroup</job-group> 
     <start-time-seconds-in-future>1</start-time-seconds-in-future> 
     <repeat-count>1</repeat-count> 
     <repeat-interval>1</repeat-interval> 
     </simple> 
    </trigger> 
    <trigger> 
     <cron> 
     <name>Job3Trigger2</name> 
     <group>Triggers</group> 
     <job-name>Job3</job-name> 
     <job-group>JobGroup</job-group> 
     <cron-expression>0/30 * * * * ?</cron-expression> 
     </cron> 
    </trigger> 
    </schedule> 
</job-scheduling-data> 

ответ

0

Job1 и Job2 не могут работать параллельно, потому что вы сказали, что Quartz Job1Class имеет атрибут DisallowConcurrentExecution. Этот атрибут работает на классах, а не на объектах. Кварц не будет запускать более одного экземпляра Job1Class. Чтобы исправить это поведение, удалите атрибут DisallowConcurrentExecution из вашего Job1Class и создайте 2 подкласса от Job1Class. Один для Job1 и один для Job2. Затем дайте каждому новому классу атрибут, и он должен работать так, как вы хотите.