2016-10-05 9 views
0

を実行していない私たちは3 quartz.net(バージョン2.3.3)ジョブ構成を有するquartz.net 2.0ジョブが並列

IInterruptableJob Job1ClassはDisallowConcurrentExecutionでマークされ、そしてもちろんのジョブ1 & JOB2(両方で使用されています異なるジョブデータで)をXMLファイルに保存します。

IInterruptableJob Job3ClassはJob3によってxmlファイルで使用されます。

quartz.threadPool.threadCountは、設定ファイルで6に設定されています。

3つのジョブのうち、2つのジョブが長時間実行されており、3つのジョブをすべて並列に実行する必要がありますが、並列実行しないことが多くありました。それで、なぜそれが並行して実行されていないのですか?

以下は、サンプルxmlファイルです。あなたはJob1ClassDisallowConcurrentExecution属性を持っていることクォーツを告げたので、

<?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

Job1Job2は、並列に実行することはできません。この属性はオブジェクトではなくクラスで機能します。 QuartzはJob1Classの複数のインスタンスを実行しません。この動作を修正するには、Job1ClassからDisallowConcurrentExecution属性を削除し、Job1Classから2つのサブクラスを作成します。 Job1用とJob2用です。その後、それぞれの新しいクラスに属性を与え、それはあなたが望むように動作するはずです。

関連する問題